Node.jsのExpressとSocket.ioでリアルタイムチャット機能を作る!というのはよくあるサンプルですが、ちょっとNamespacesというのを試してみたかったので書いておきます。
チャットも、サイトに接続している人のすべてにメッセージが届いてほしい、という場合はまれでしょう。
大体は、誰かと誰かのチャットになると思います。
そんな時、サーバーとエンドポイント(クライアントのブラウザ)で、相互にこの相手にしか送らない、ということができるわけです。
Socket.io公式サイト↓
https://socket.io/docs/rooms-and-namespaces/#
超簡単なサンプルですが、サンプルコード書いておきます。
//サーバー側 var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); server.listen(3000); var nsp = io.of('/koume'); nsp.on('connection', function(socket){ console.log('someone connected'); socket.emit('message', { title: "hogehoge" }); });
//クライアント側(html内) var socket = io('http://localhost:3000/koume'); socket.on('message', function (data) { console.log(data); $('#messages').show(); $('#messages').append($('<li>').append($('<a href="">').text(data.title))); });