gpt4 book ai didi

javascript - Socket IO不断断开并重新连接

转载 作者:行者123 更新时间:2023-12-03 20:52:45 24 4
gpt4 key购买 nike

我对sockets和socket.io非常陌生,所以如果这是一个明显的问题,我深表歉意。我正在使用 C# client for Socket.IO并运行本地 javascript 服务器。这是我的 app.js:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

io.on('connection', function(socket) {
console.log('A user connected');

socket.on('test', function () {
console.log('Test run'); });


socket.on('disconnect', function () {
console.log('A user disconnected'); });

});

http.listen(3000, function() {
console.log('listening on localhost:3000'); });

在我的主要 C# 类(它是一个 Windows 窗体应用程序)中,与套接字相关的唯一代码行是实例变量 private Socket socket = IO.Socket("http://localhost:3000/");。 .然而由于某种原因,服务器反复接收连接和断开事件。这是我的控制台的屏幕截图:
screenshot

这一切都会在我运行我的 C# 程序时自动发生,无需任何交互,并在我关闭它时立即停止。关于它为什么不断连接/断开的任何想法?

编辑 :无论出于何种原因,当我从项目中删除 Newtonsoft.json 时,问题似乎就消失了。但是,如果没有它,我将无法像其他人一样使用 Emit 功能。有解决方法吗?

最佳答案

对于遇到此问题的任何人,请检查客户端和服务器是否使用相同的协议(protocol)版本。
在高层次上,这很可能是由服务器和客户端之间的协议(protocol)版本不匹配引起的。我在 JS 应用程序中遇到了同样的问题。原来我在客户端上使用了一些旧版本的 socket.io,而在服务器上使用了最新版本。在您提供的存储库中,我们可以找到:

// EngineIoClientDotNet/Src/EngineIoClientDotNet.mono/Parser/Parser.cs
public static readonly int Protocol = 3;
所以这个(现在已弃用)客户端使用的是 Engine.IO 协议(protocol) v3。您没有提供您在服务器上使用的 socket.io 版本的信息,但它可能只是在 Engine.IO 协议(protocol)上使用了不同的版本。
作为旁注,说得更底层:我猜客户端可能能够连接,但它没有以正确的方式(或相反)响应服务器的第一个 ping 命令。因此,连接会立即断开。 Socket.IO 在实现 ping-pong 机制方面有着重大变化的历史,这可能是根本原因。

关于javascript - Socket IO不断断开并重新连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62140501/

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