【发布时间】:2012-03-12 05:27:50
【问题描述】:
我是 nodejs 的新手,正在尝试使用 socket.io。我正在尝试将消息发送到特定的套接字,所以我想我会存储对套接字的引用。
var controls = {};
var clients = {};
var control = io
.of("/control")
.on("connection", function(socket){
socket.on("connect_player", function(data){
var id = data.screen_id;
controls[socket.id] = id;
});
socket.on("msg", function(data){
id = controls[socket.id]
player.socket(clients[id]).emit("msg", data);
});
});
var player = io
.of("/player")
.on("connection", function(socket){
socket.on("set_id", function(id){
clients[id] = socket.id
});
});
我首先启动一个网页,该网页连接到“播放器”命名空间并显示一个 id(硬编码)。然后另一个网页连接到与播放器具有相同 ID 的“控制”命名空间,现在控制器应该能够向该特定播放器发送消息,但这可以工作一段时间然后失败。
在它工作期间,我可以将消息从控制页面发送到特定的播放器页面。
我在播放器命名空间停止工作后查看了套接字 ID,发现套接字 ID 与最初的不同。
我想我在这里做错了什么或者对概念有错误的理解。我该如何解决这个问题。
编辑:
我为“重新连接”事件添加了侦听器,发现 socket.id 的值在每个“重新连接”事件之后都会发生变化。所以控件和客户端的 socket.id 值无效,这导致了我的问题。有没有办法克服这个问题。
【问题讨论】: