node.js + socket.ioの覚書

今触ってる奴の覚書

ServerとClientの通信

socket.io.jsを読み込んでio.connectで接続する。Server、Clientともにsocket.onでメッセージを受信して色々やる

// サーバ側
io.sockets.on('connection', function (socket) {
    // こんな感じでメッセージを受信
    // Clientの第1引数と同じで受信できる
    socket.on('user info', function(info) {
       // メッセージ受信後の処理
    });
});
// client側

// これで接続
socket = io.connect();

// これでメッセージ送信
// 第1引数がメッセージ名、第2引数が送信するデータ
socket.emit('user info', info);

これから記載していくことはServer側、Client側でSocketという名前の変数に値が入ってるものとして記載してる

通信中のclient idを取得する

サーバ側で取得する

    // これで通信中のIDが取得できる
    var id = socket.id

メッセージを送信してきたClientへメッセージを返答

socket.emit('message', info);

接続しているClient全体にメッセージを送信

io.sockets.emit('message', info);

個別にデータを送信

io.sockets.socket(socket.id).emit('message', info);

まとめ

WebSocketのリアルタイム通信は大体これぐらいあればいろいろできる。簡単にチャットソフトとかもすぐできる。io.emit()でClient側から来たデータをio.sockets.emit()で全Clientに流す。個別チャットをやりたかったらio.emit()で第2引数に個別の送信先のsocket.idを渡してもらえばそこ流すだけでいい。

あまりに簡単にかけすぎるからnode.jsとWebSocketに恋してしまいそう。ってか、Binaryデータもデータとして投げてこれるらしいんだが、それをそのままClientに流しちゃうとセキュリティ的に色々困ったことが起こりそうな気がする。まぁ、個人でやってる分にはそこまで考えないけど、企業でやるならそこらへんまで気を付けないといけないのかもねぇ。