什么是用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