【问题标题】:Socket.io - Is there a way to save socketid to prevent a new one being generatedSocket.io - 有没有办法保存 socketid 以防止生成新的
【发布时间】:2019-09-26 11:12:00
【问题描述】:

在连接到 socket.io 服务器后,会为连接提供一个 socket.id。当一段时间后套接字连接没有被使用时,会生成一个新的套接字 id。

我已经阅读了很多教程,这些教程提供了一个“hello world”连接,只是让你连接起来,但是,没有太多关于消息对等/组的文献。文档给出了关于房间/命名空间的 3 行段落,与此相关的每个问题都只是给出了指向相同 3 行段落的链接。

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

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

然后我向randomSocketID1 发送消息-->“你好”。然后第二天我想再给“妈妈”发一条信息。那个 socketID 是否会是相同的或至少将“randomSocketID1”在引擎盖下更新,更新为它的更新 ID(这听起来不太可能)? socketID的再生是垃圾回收还是socket/engine/websocket协议的产物?

感谢您的澄清

【问题讨论】:

    标签: express socket.io


    【解决方案1】:

    所以我仍然无法找到一个实际的答案,并且通过 0 的回复,我看到没有人知道。因此,为了确保维护用户和套接字 ID,我所做的是,每当用户输入连接到 socketio 服务器的组件时,就会发出自动“更新用户”,然后后端只找到用户并分配它的价值。

    所以我有这样的事情:

    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
      });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      • 1970-01-01
      • 1970-01-01
      • 2020-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多