【问题标题】:Socket.io: Send message to a specific namespace with specific IDSocket.io:将消息发送到具有特定 ID 的特定命名空间
【发布时间】:2017-12-03 02:07:29
【问题描述】:

是否可以使用自定义 socket.id 向具有不同命名空间的套接字发送消息??我正在使用 socket.io 创建聊天并发送私人消息。

我成功地创建了一个房间并使用

私下向对方发送了一条消息
io.to(room).emit('chatMessage', from, message);

但我也想使用它们的 ID 向具有不同命名空间的套接字发送消息,例如:

io.of('nameSpace').to(socket.id).emit('chatMessage', from, message); 

我尝试了不同的组合,例如,

io.of('nameSpace').to(socket.id).emit('chatMessage', from, message);

io.of('nameSpace).sockets.socket(socket.id).emit('chatMessage', from, message);

io.to(users[socketid]).emit('chatMessage', from, message);

io.sockets.socket(socketid).emit('chatMessage', from, message);

但它不起作用。是否有其他方法可以将消息发送到具有不同命名空间的特定客户端?我正在使用房间和命名空间的组合。

注意:我使用与用户名相同的字符串查询作为我房间的名称。

【问题讨论】:

  • 我不知道 socket.io 上的“命名空间”是什么,但我在向服务器上的某个用户 id 发送发射之前编写了一个代码,以将他重定向到游戏页面以使用开始游戏mysql 和 node.js 和 socket.io 如果你关心我可以把它写在答案上我认为代码将有助于解释如何在 socket.io 上保存护照用户 ID 并在页面上向它发送内容
  • 哟?您是否使用房间向某个用户 ID 发出信号?
  • 我将用户 ID 保存在 socket.io 和 mysql 的数组中,然后我在不使用房间的情况下调用它
  • 你用的是什么版本的socket.io?我已经将 id 保存到了一个数组中,但我需要的是向具有特定命名空间的特定 socket.id 发送/发送消息。我正在使用房间和命名空间的组合,我认为数组不是解决方案。感谢您的回复。
  • io.of('nameSpace').to(socket.id).emit(...) 应该可以工作,前提是 socket.id 已实际连接到该命名空间。

标签: node.js websocket socket.io


【解决方案1】:

此解决方案适用于多个命名空间。
假设我们有两个命名空间:

  1. /v1
  2. /v2,套接字 ID:LOchCx6DZ8YwPVF8AAAv

从 namespace-1 向 namespace-2 发送消息的语法是

io.of('/v2').to('/v2#LOchCx6DZ8YwPVF8AAAv').emit('message', 'Hello');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 2012-07-08
    相关资源
    最近更新 更多