Leap Motionがついに発売&発送されて各地から着弾報告が聞こえてます。僕もはやく遊びたいです。
さて、Leap MotionはどうやらJavaScriptでブラウザ上での動作をサポートしているらしい。デバイスを直接ブラウザからUniversalな方法で制御なんてできるはず無いのに…ActiveXとかそういうあれだとプラットフォーム依存だし…どうなってるんだろう…とおもってライブラリを眺めてみました。 すると、先頭の方にこんなのが。
var BaseConnection = module.exports = function(opts) { this.opts = _.defaults(opts || {}, { host : '127.0.0.1', enableGestures: false, port: 6437, enableHeartbeat: true, heartbeatInterval: 100, requestProtocolVersion: 3 }); this.host = opts.host; this.port = opts.port; this.on('ready', function() { this.enableGestures(this.opts.enableGestures); if (this.opts.enableHeartbeat) this.startHeartbeat(); }); this.on('disconnect', function() { if (this.opts.enableHeartbeat) this.stopHeartbeat(); }); this.heartbeatTimer = null; } BaseConnection.prototype.getUrl = function() { return "ws://" + this.host + ":" + this.port + "/v" + this.opts.requestProtocolVersion + ".json"; }
こ、こいつ、WebSocketでローカルのネイティブバイナリと通信してやがる…!!!とても今風なブラウザというサンドボックスを超える方法でした。