Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Socket.io:将消息发送到具有特定ID的特定命名空间_Node.js_Websocket_Socket.io - Fatal编程技术网

Node.js Socket.io:将消息发送到具有特定ID的特定命名空间

Node.js Socket.io:将消息发送到具有特定ID的特定命名空间,node.js,websocket,socket.io,Node.js,Websocket,Socket.io,是否可以使用自定义socket.id将消息发送到具有不同命名空间的套接字??。我正在使用socket.io创建聊天室并发送私人消息 我成功地创建了一个房间,并使用 io.to(room).emit('chatMessage', from, message); 但我还希望使用不同名称空间的套接字的ID向其发送消息,如: io.of('nameSpace').to(socket.id).emit('chatMessage', from, message); 我尝试过不同的组合,比如 io.of

是否可以使用自定义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);
但它不起作用。是否有其他方法向具有不同命名空间的特定客户端发送消息?我使用的是房间和名称空间的组合


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

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

  • /v1
  • /v2,插座ID:LOCHCX6DZ8YWPV8AAV
  • 将消息从命名空间-1发送到命名空间-2的语法为

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

    我不知道什么是“名称空间”在socket.io上,但我在向服务器上的特定用户id发送emit之前编写了一个代码,将他重定向到游戏页面,使用mysql、node.js和socket.io启动游戏如果你介意的话,我可以在答案上写下它。我认为该代码将有助于解释如何在socket.io上保存passport用户id,并在佩吉奥?您是否使用rooms向某个用户id发送数据?我将用户id保存在socket.io和mysql上的数组中,然后在不使用rooms的情况下调用它。您使用的socket.io版本是什么?我已经将id保存到数组中,但我需要的是向具有特定命名空间的特定socket.id发送/发出消息。我使用的是文件室和名称空间的组合,我不认为数组是解决方案。感谢您的响应。
    io.of('nameSpace')。to(socket.id.).emit(…)
    应该可以工作,前提是
    socket.id
    实际已连接到该命名空间。