Socket.IO订阅多个通道
我想在Socket.IO上构建一个简单的聊天室系统,用户可以在其中创建一个新的聊天室,然后人们就可以开始聊天了 这听起来很简单,但随着Socket.IO 0.9.4的运行,在阅读了一些关于Socket.IO的文章后,我越来越困惑了。因此,我希望有人能为我提供使用0.9.4的指导:Socket.IO订阅多个通道,socket.io,Socket.io,我想在Socket.IO上构建一个简单的聊天室系统,用户可以在其中创建一个新的聊天室,然后人们就可以开始聊天了 这听起来很简单,但随着Socket.IO 0.9.4的运行,在阅读了一些关于Socket.IO的文章后,我越来越困惑了。因此,我希望有人能为我提供使用0.9.4的指导: 我需要一种预订房间的方式。房间名称由用户选择。在房间中张贴消息时,用户应收到该消息。我应该如何编写服务器代码,我应该如何编写客户端代码 用户可以同时加入多个房间 我希望另一个系统向某个房间中的所有用户发送消息。此“另一
使用socket.io文件室功能,这一切都非常简单。请查看LearnBoost wiki上的文档 它允许通过一个插座连接到多个房间。我用下面的代码编写了一个快速测试 服务器
io.sockets.on('connection',函数(客户端){
在('订阅',功能(房间){
控制台日志(“连接室”,房间);
客户。加入(房间);
})
在('unsubscribe',函数(房间){
控制台日志(“离开房间”,房间);
客户离开(房间);
})
client.on('send',函数(数据){
console.log(“发送消息”);
io.sockets.in(data.room).emit('message',data);
});
});
客户端
var socket=io.connect();
socket.on('message',函数(数据){
控制台日志(数据);
});
emit('subscribe','roomOne');
emit('subscribe','roomTwo');
$(“#发送”)。单击(函数(){
var room=$(“#room”).val(),
message=$('#message').val();
emit('send',{room:room,message:message});
});
从快速路线发送消息也很简单
app.post('/send/:room/',函数(req,res){
var房间=所需参数房间
消息=req.body;
io.sockets.in(room.emit('message',{room:room,message:message});
res.end(“已发送消息”);
});
客户是否有办法离开两个房间中的任何一个?我不确定。您可以将这两个房间存储在一个阵列中,然后循环并取消订阅。或者可能有一个断开功能。(我从来没有用过这个)@kbariotis。创建一条类似于“离开”
的消息,并让您的客户将其与希望离开的房间的名称一起发送。然后连接“断开”按钮以发送此类消息。服务器端,命令套接字离开给定的房间。@Timothy Strimple您不也应该听socket.on“disconnect”吗,这样,如果断开连接,用户将自动取消房间订阅,或者socket.io是否为我们处理此情况?根据socket.io文档():,断开连接后,套接字自动离开它们所属的所有通道,您不需要特别拆卸。
您解决了这个问题吗?如果是的话,你能给我指一下源代码吗?谢谢