gpt4 book ai didi

node.js - 第二次无法建立 socket.io 客户端连接

转载 作者:搜寻专家 更新时间:2023-10-31 22:19:05 25 4
gpt4 key购买 nike

目前,我正在使用 nodejs express 实现一个 API,然后它需要连接到 socket.io 并发送事件。

API位于socket.io-client(客户端),它连接到socket.io(服务器)

第一次 API 调用:成功

在第一次调用 API 时建立连接,发送消息并断开套接字,同时在客户端和服务器端调用“断开连接”回调。

第二次 API 调用:失败

第二次调用API时,无法连接到服务器,没有调用客户端的'client'回调。

第三次 API 调用:成功

然后我尝试重启客户端,保持其他不变。再次调用 API,成功连接到 socket.io,一切正常。

谁能解释一下这背后的逻辑?

已更新

客户端.js

   App.getByUserId(message.to_id, function(error, app) {
var socket = io.connect('http://127.0.0.1:9002');
socket.on('connect', function(){
console.log("client connect socket id:" + socket.id);
console.log("appkey:" + app.private_token);
socket.emit('appkey.check',{appkey: app.private_token, uuid: message.to_id.uuid}, function(data){
socket.emit("forceDisconnect");
socket = null;

});
});

最佳答案

您只是遇到了 Socket.IO 的许多“功能”或“错误”之一,具体取决于您如何看待它。 Socket.IO 试图变得聪明并重用连接(这实际上会导致很多连接问题)解决这个问题的方法是使用 force new connection io.connect 中的选项:

io.connect('http://127.0.0.1:9002', { 'force new connection': true });

您还可以使用 https://github.com/primus/primus如果您使用 socket.io 转换器,它会包装 Socket.IO。在内部,它完全删除了 io.connect 的使用并使用更低的级别 io.Socket构造函数来创建比普通 socket.io 更稳定的连接。

关于node.js - 第二次无法建立 socket.io 客户端连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18933124/

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