【发布时间】:2014-11-06 04:15:09
【问题描述】:
我将username 添加到这样的套接字对象中,它工作正常
socket.on('add user', function (username) {
socket.username = username;
});
让我们假设username 是khawer,现在我想发射到username 是khawer 的这个套接字,但我不能这样做。
我试过了
io.sockets.connected[socket.username].emit('chat message', msg);
还有这个
io.sockets.sockets[socket.username].emit('chat message', msg);
但两者都不起作用。我在这里做错了什么?
【问题讨论】:
-
我认为你应该使用套接字 ID 而不是用户名
io.sockets.connected[SomeSocketID].emit(...) -
是的,这行得通。由于
socket.id是套接字对象的索引,那么为什么socket.username不是索引? -
socket.username是您自己的财产。套接字库对它没有任何作用。如果您想按该属性建立索引,则必须创建自己的索引。 -
我认为这是socket.io的一个缺点。它只有 socket.id 用于索引
-
@Paramore - 用户名是您自己的发明,而不是与 socket.io 有任何关系的属性。如果你想要一个你发明的东西的索引,那么你就创建你自己的索引。我在下面的答案中添加了几种可能的解决方案。