首页 > 解决方案 > 将 socketio 套接字 id 转换为套接字对象

问题描述

我有一个充满用户的对象:

{
  user1: {
    name: 'user',
    id: 'hdqijhdwi' //socket id
  } //etc
}

我想获取给定用户名和套接字 ID 的套接字对象。有没有办法在给定套接字 id 的情况下获取用户的套接字。

标签: node.jswebsocketsocket.io

解决方案


由于 node.js 标记,我假设此代码是服务器端的。如果是这种情况,那么您可以使用socket.id来做很多事情。

例如,如果连接在顶级命名空间中,那么您可以使用如下方式发送给给定用户socket.id

io.to(id).emit("someEvent", someData);

如果它在不同的命名空间中,您可以使用命名空间而不是io.

请注意,io.to()andnamespace.to()被记录为发送到room. 但是,这适用于 socket.id,因为每个套接字都唯一地进入一个具有其 id 名称的房间,因此这是一种通过 id 发送到套接字的聪明方法。


或者,如果您只想要该socket对象,您可以从顶级命名空间套接字哈希对象中获取它,如下所示:

let socket = io.connected[id];
if (socket) {
    socket.emit(someEvent, someData);
}

推荐阅读