首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >客户端具有不同路径的两个套接字连接与第二个连接重叠

客户端具有不同路径的两个套接字连接与第二个连接重叠
EN

Stack Overflow用户
提问于 2022-03-04 10:13:10
回答 1查看 225关注 0票数 0

根据列表的条件,我有两个客户端连接,而Server有两个具有不同端口和不同握手路径的服务器套接字,以便客户端轻松连接。

服务器:

代码语言:javascript
复制
Name     | Port | Handshake path 
Socket A | 3001 | /one
Socket B | 3002 | /two

因此,在从颤振应用程序连接时,无论首先打开哪个listItem,都会建立与指定握手路径的连接。

代码语言:javascript
复制
Items | HandshakePath
Item1 | /one
Item2 | /two
Item3 | /one

对于上面的场景,当我单击第1项时,它会使服务器上的/one套接字连接正常,但是在单击Item2之后,它仍然在/one路径上创建连接,反之亦然,无论先建立哪种连接,保持连接并重叠第二个连接。

连接类别1

代码语言:javascript
复制
Class One{
 IO.Socket _socket;
 connect(){
 _socket = IO.io(
        deployment ? _serverIP : SERVER_ONE,
        IO.OptionBuilder()
            .setTransports([
              'websocket'
            ]) 
            .setQuery({
              "info": _fromUser,
            })
            .setPath(deployment ? "/one" : "/socket.io")
            .disableAutoConnect()
            .build());
 }
}

连接类别2

代码语言:javascript
复制
Class Two{
 IO.Socket _socket;
 connect(){
 _socket = IO.io(
        deployment ? _serverIP : SERVER_TWO,
        IO.OptionBuilder()
            .setTransports([
              'websocket'
            ]) 
            .setQuery({
              "user1": _fromUser1,
              "user2": _fromUser2,
            })
            .setPath(deployment ? "/two" : "/socket.io")
            .disableAutoConnect()
            .build());
 }
}

与本地服务器的连接非常好,我想是因为ENV变量中提到的不同端口,但是在服务器上,我已经根据路径设置了路由转发到不同的端口。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-08 12:12:13

在社区的帮助下,我找到了解决方案。

当我们使用socket_io_client创建第一个套接字客户端连接时,我们提供的任何选项生成器值都将在我们将要创建的每个实例中使用,即使我们提供了不同的值,它将只使用以前的值。在这种情况下,

我们必须使用enableForceNew()方法来提供不同的值。

代码语言:javascript
复制
  _socket = IO.io(
            deployment ? _serverIP : SERVER_TWO,
            IO.OptionBuilder()
                .enableForceNew() // <--- this method
                .setTransports([
                  'websocket'
                ]) 
                .setQuery({
                  "user1": _fromUser1,
                  "user2": _fromUser2,
                })
                .setPath(deployment ? "/two" : "/socket.io")
                .disableAutoConnect()
                .build());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71349813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档