什么是用socket.iopipe理多个聊天室的正确方法?

什么是用socket.iopipe理多个聊天室的正确方法?

所以在服务器上会有这样的:

io.sockets.on('connection', function (socket) { socket.on('message', function (data) { socket.broadcast.emit('receive', data); }); }); 

现在,这可以在一个房间里正常工作,因为它将信息传达给所有相关的人。 你如何发送消息给在特定聊天室的人呢?

添加.of('/ chat / room_name')? 或者把每个人都放在一个房间里?

现在,Socket.IO v0.7为每个您定义的名称空间提供一个Socket

 var room1 = io.connect('/room1'); room1.on('message', function () { // chat socket messages }); room1.on('disconnect', function () { // chat disconnect event }); var room2 = io.connect('/room2'); room2.on('message', function () { // chat socket messages }); room2.on('disconnect', function () { // chat disconnect event }); 

使用不同的套接字,您可以select性地发送到您想要的特定命名空间。

Socket.IO v0.7也有“房间”的概念,

 io.sockets.on('connection', function (socket) { socket.join('a room'); socket.broadcast.to('a room').send('im here'); io.sockets.in('some other room').emit('hi'); }); 

来源: http : //socket.io/#announcement

更新:Now.js和Bridge现在都已经死了,看到now.js死了 , 桥死了 。 Socket.io似乎已经采用了v0.9的callback函数,这是一个很好的进步。

虽然它不是直接与Socket.io相关,但是Now.js(Socket.io的更高层抽象层)支持组合 – http://nowjs.com/doc

他们在offocial repo这里有一个多房间聊天的例子: https : //github.com/Flotype/now/blob/master/examples/multiroomchat_example/multiroomchat_server.js