【问题标题】:Socket.io : New connections are created with only one client connectedSocket.io:创建新连接时仅连接一个客户端
【发布时间】:2021-06-28 05:43:08
【问题描述】:

我有一个简约的 socket.io,它在 Node.js 上运行,带有一个 HTML 客户端

这是我的极简服务器代码(server.js):

const io = require('socket.io')(3000);

io.on('connection', (socket) => {
  console.log(`new connection : ${socket.id}`);
});

和我的极简客户端代码(client.html):

<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/3.1.3/socket.io.js"></script>
  <script>
    var socket = io('http://localhost:3000/'); 
  </script>
  <title>Document</title>
</head>
<body>
</body>
</html> 

当我打开 client.html 时,我收到消息:

new connection : DedBsiEyAHLIu86oAAB0 

这很好,但是在 7-8 秒后,我收到了其他具有不同套接字 ID 的新连接消息:

new connection : K3DUMN7SJ0tOU7TsAACO
new connection : 3kCOVCz9fwRWtIypAACP
new connection : HgMVgpeP7raq1c4YAACQ
new connection : U6-lD-3lT1vT39_oAACR
new connection : aQCKYpBUVXD7t8WIAACS

在 Chrome devtools-network 选项卡上,显示相同的重复消息(填充新连接):

Request URL: http://localhost:3000/socket.io/?EIO=4&transport=polling&t=NYCWok4
Request Method: GET
Status Code: 200 OK
Remote Address: [::1]:3000
Referrer Policy: strict-origin-when-cross-origin

非常感谢您的帮助。

问候

皮埃尔。

【问题讨论】:

  • 如果指定传输层会发生什么? (看起来您使用长轮询)它可能会退回到长轮询并尝试重新连接 io.connect(server, { "transports": ['websocket'] })
  • 我意识到我在 Chrome 中使用了一个 CORS 启用插件,我禁用它解决了我的问题。

标签: html node.js server socket.io client


【解决方案1】:

我意识到我在 Chrome 中使用了一个 CORS 启用插件,我禁用它解决了我的问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    相关资源
    最近更新 更多