【发布时间】:2016-05-20 04:19:40
【问题描述】:
socket.io 1.4.5,node.js 5.x
Forward : 在这篇文章之前有很多阅读、努力和失败 - 所以我希望它可以帮助很多未来的读者。
当我考虑如何使用默认房间时,我感到困惑 使用房间进行特定于用户的交流。(如直接消息)
因为直观上看,它似乎是一种开箱即用的解决方案,可能 应该弃用为每个用户创建自定义房间的需要 用户 ID 或电子邮件,例如 this popular solution。
因为它是自动创建的,所以我认为它应该是我的 并且每个用户只有唯一的监听器。
这促使我尽职尽责地创建了这个解决方案:
io.on('connection', function(socket){
var curretUserID = null
socket.on('set user',function(user){
userID = curretUserID.id
});
io.to(socket.id).emit('welcome','welcome to the room!)
socket.on('chat message', function(msg){//Makes Sense
io.emit('chat message', msg);
});
socket.on('private message', function(id, msgData){
if(userID === msg.recipientID){
socket.to(id).emit('private message', 'for your eyes only');
}
});
});
我将 userID 设置在父作用域 connection 内,以避免在用户和套接字之间创建映射,因为这应该是完全使用房间解决方案的优势。
现在我还没有看到有人这样做,所以我不知道我是不是 完全朝着默认房间的方向发展,或者如果 出于某种原因,这在野外无法扩展或运行良好。
问题:
这是默认房间的预期用途之一,还是正在创建 自定义房间(如上面提到的流行答案)仍然是当前处理用户特定通信的方式吗?
【问题讨论】:
标签: node.js sockets socket.io socket.io-1.0