【问题标题】:Socket.io (1.0) + Multiple client connectionsSocket.io (1.0) + 多个客户端连接
【发布时间】:2015-10-27 17:09:43
【问题描述】:

所以我将两个变量(对象)连接到同一个 socket.io 服务器,一个的工作是处理公共提要,另一个负责处理具有扩展功能的私有提要。

我尝试了“强制新连接”选项,但是两个连接似乎仍然使用相同的套接字 + 会话 ID。

我最初没有包含代码,因为这太基础了,但是你去吧:

var socket = io(host);
socket.on('connect', function(e){
    socket.emit('join', {
        channel: stream_channel,
    });
});

一个是var socket,另一个是var socket2。当它连接到服务器时,它会发出“join”,其中:

io.on('connection', function(socket){
    socket.on('join', function(d){
        socket.join(d.channel);
    });
});

【问题讨论】:

  • 请向我们展示您的代码。问题在于您的特定代码,而不是一般的 socket.io。正如我认为您会从这里的经验中知道的那样,关于代码的问题应该始终包含相关代码,因为这总是会为您提供更好、更具体的答案,并且在某些情况下(像这样)是获得答案的唯一方法这不仅仅是一个疯狂的猜测。
  • 仅供参考,会话 ID 可能基于 cookie,因此来自同一客户端的两个连接将始终共享相同的 cookie,因此共享相同的会话 ID(如果它们确实基于 cookie)。但是,如果需要,正确的代码将创建两个单独的 socket.io 连接。

标签: node.js socket.io


【解决方案1】:

我能够通过以下方式解决这个问题:

  1. 为多个房间订阅 websocket
  2. 在每个 POST 中附加其他变量以定义要发射到的房间

我能够确定:

  1. 使用相同的主机将始终保持相同的会话 ID/套接字(即使启用了强制连接)
  2. 可能使用不同的主机或命名空间将允许连接分离
  3. 最好保持与多个房间的单一连接

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多