Socket.io-有没有一种方法可以保存socketid以防止生成新的socketid

时间:2019-05-08 16:46:43

标签: express socket.io

连接到socket.io服务器后,将为该连接提供一个socket.id。如果一段时间后未使用套接字连接,则会生成一个新的套接字ID。

我已经阅读了很多教程,它们建立了一个“ hello world”连接,可以使您建立连接,但是,有关点对点/组消息传递的文献很少。文档在room / namespaces上给出了一个三行段落,与此相关的每个问题都被链接到相同的三行段落。

我了解您可以创建和创建对象/聊天数组(在此示例中)。对于此示例,假设它是一个对象。该对象看起来像这样:

const connections = {
  "randomSocketID1": { 
    recipient: "Mom",
    messages: [Array of Objects]
    //more information
    }
}

然后我向randomSocketID1->'Hello'发送消息。然后第二天,我想向“妈妈”发送另一条消息。那个socketID是还是至少相同?“ randomSocketID1”会在后台更新为更新后的ID(听起来不太可能)吗?生成socketID是垃圾回收还是套接字/引擎/ websocket协议的产物?

感谢您的澄清

1 个答案:

答案 0 :(得分:0)

因此,我仍然找不到真正的答案,并且通过0条答复我看不到任何人知道。因此,为了确保维护用户名和套接字ID而做的是,每当用户输入连接到套接字服务器的组件时,都会发出一个自动的“更新用户”,然后后端便找到该用户并进行分配它的价值。

所以我有这样的东西:

chat.component.ts:

ngOnInit(){
  this.socket.emit('update-user', 'Ctfrancia');
}

然后在后端:

const users = {};

io.on('connection', socket => {
  socket.on('update-user', user => {
    if (user in users) users[user] = socket.id;
    else users[user] = socket.id
  });
});