読者です 読者をやめる 読者になる 読者になる

node.jsでZeroMQを使う

node.js ZeroMQ

空前のZeroMQ, node.jsブームの中、皆様いかがお過ごしでしょうか。

ブームと言いつつもnode.jsに今日始めて触った僕が最初に試したのはZeroMQを使うこと。zeromq.nodeを使えば簡単に出来ますね。

サーバー側をサンプルを参考に写経。

zmq = require('zeromq');
sys = require('sys');

ctxt = new zmq.Context();
socket = new zmq.Socket(ctxt, zmq.Socket.ZMQ_REP);

socket.bind('tcp://127.0.0.1:5554', function(err) {
    if (err) {
        throw new Error(err);
    }

    socket.on('receive', function(data) {
        sys.puts("received data: " + data);
        socket.send("Your message was received");
    });

    sys.puts("Ready to go!");
});

クライアント側もサンプルを参考に最小限で書いてみたんだけど、receiveのコールバックの中でsocketを閉じると、segmentation faultで落ちる・・・

zmq = require('zeromq')
sys = require('sys')

ctxt = new zmq.Context()
socket = new zmq.Socket(ctxt, zmq.Socket.ZMQ_REQ);

socket.connect('tcp://127.0.0.1:5554');
socket.send("Hello");

socket.on('receive', function(data) {
    sys.puts("Received reply " + data);
    //socket.close();
});

node.jsは誰がどんな用途で使おうとしているのかまだよく分からないところがありますが、ZeroMQは久々にきた熱い技術って感じがしますね。