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)));
});
