0mq(zeromq)をnode.jsで使う
depthJSを参考にKinectとブラウザの連携をさせていたのだが、depthJSは中間層がPythonのtornadeなので、node.jsにしてみた。
インストールはnpmからできた。コードはこれだけ。
var http = require('http'), io = require('socket.io'), zmq = require('zeromq'); var server = http.createServer(); server.listen(9876); // node.js ==> browser var webSocket = io.listen(server); webSocket.on('connection', function(client) { console.info('browser connect!!!'); client.on('disconnect', function() { console.info('disconnect'); }); }); // OpenKinect ==> node.js var zsocket = zmq.createSocket('sub'); zsocket.on('message', function(event, data) { webSocket.broadcast(data); }); zsocket.on('error', function(err) { console.info('error'); console.info(err.toString('utf8')); }); zsocket.connect('tcp://127.0.0.1:14444'); zsocket.subscribe('event');
WebSocketの実装はSocket-IO.nodeを使った。しかしこれはWebSocketを隠蔽しまくっているので、単純な使い方をする場合は別の実装を使った方がよさげ*1。0mqは触るのも初めてだったが、感触としては別の言語で書かれた物を連携させるのにすごい便利。しかも簡単に使える。
リンク
- ZMQ API DOC
- http://api.zeromq.org
*1:動作がよくわからなかったのでsocket.io.jsを読んだ