tmytのらくがき

個人の日記レベルです

Leap MotionのJavaScriptライブラリ

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でローカルのネイティブバイナリと通信してやがる…!!!とても今風なブラウザというサンドボックスを超える方法でした。