gpt4 book ai didi

node.js - Socket.io 需要很长时间才能连接

转载 作者:太空宇宙 更新时间:2023-11-03 22:32:28 25 4
gpt4 key购买 nike

我正在编写一个node.js socket.io websockets应用程序(socket.io版本1.3.7),大约75%的时间客户端需要很长时间才能连接到服务器 - 其他25%它几乎立即连接。我已经在服务器和客户端上启用了调试,并且它卡在同一位置的两个位置:

服务器日志 Server log

客户端日志 (Chrome) Client log

最终它会连接,并且我已经能够通过将超时从默认的 20 秒减少到大约 5 秒来使其连接更快,但我不确定它为什么会挂起。观察 Chrome 网络选项卡,似乎在进行连接尝试时,它要么立即工作,要么在其余的连接尝试中不起作用。因此,将超时设置为 5 秒只是意味着它会更快地进行更多尝试,其中一次最终会成功。

网络日志 (Chrome) Network log

在本例中,需要 5 次连接尝试(大约 20 秒)才能连接。

客户端代码

// client.wsPath is typically http://127.0.0.1:8080/abc, where abc is the namespace to connect to.
client.socket = io.connect(client.wsPath, {timeout: 5000, transports: ["websocket"]});

服务器代码

var express = require("express");
var io = require("socket.io");
var htmlApp = express();
var htmlServer = http.Server(htmlApp);
htmlServer.listen(DISPATCH_SERVER_LISTEN_PORT, function()
{
log.info("HTML Server is listening on port " + DISPATCH_SERVER_LISTEN_PORT);
});

var wsServer = io(htmlServer, {transports: ["websocket"]});
var nsp = wsServer.of("/" + namespace);
nsp.on("connection", function(socket)
{
log.info("connect");
};

我们发现清除浏览器 cookie 会有所帮助,但似乎不是一个永久的解决方案 - 是我做错了什么吗?

最佳答案

我们在套接字 IO SDK 方面也面临着类似的问题。看起来 SDK 实际上正在等待确认(util 正在接收带有 SID 的消息)以开始消息传递。但在典型的 WS/WSS 通信中,我们可以在连接后立即开始消息传递。我们正在尝试调整 SDK,使其能够在连接建立后立即开始消息传递。如果有人找到更好的方法,请分享。

关于node.js - Socket.io 需要很长时间才能连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34664132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com