Socket.io-client 连接错误:websocket 错误

以前,我使用代码得到输出“xhr poll error”:

import { io } from "socket.io-client";

const socket = io("https://socket.io/docs/v4", {
    reconnection: true,
    reconnectionDelay: 1000,
    reconnectionDelayMax: 5000,
    reconnectionAttempts: 3
});

socket.on('connect_error', function(error) {
    console.log(error.message);
});

通过一些研究,通过添加“transport:['websocket']”来“解决”这个问题。这是我当前的代码

import { io } from "socket.io-client";

const socket = io("https://socket.io/docs/v4", {
    reconnection: true,
    reconnectionDelay: 1000,
    reconnectionDelayMax: 5000,
    reconnectionAttempts: 3,
    transports: ['websocket']
});

socket.on('connect_error', function(error) {
    console.log(error.message);
});

不幸的是,这并不能真正解决我的问题,因为现在我得到以下输出:websocket 错误。

我尝试过的其他事情:在 URL 之后指定端口并将rejectUnauthorized 设置为false。 (两者都给了我相同的 websocket 错误。

我对接下来要做什么有点困惑,很高兴听到你们中的一些反馈!

Socket.io-client 版本:4.5.1

stack overflow Socket.io-client connection error: websocket error
原文答案
author avatar

接受的答案

默认情况下,如果可能,客户端将尝试建立 WebSocket 连接,否则将回退到 HTTP 长轮询,这解释了为什么您提到的第一个更改解决了轮询错误,但现在您遇到了 websocket 错误。

如果它尝试自动重新连接,您可能需要启用 CORS 或设置凭据。如果不是,您应该尝试在超时后使用 socket.connect() 手动重新连接


答案:

作者头像

这可能是客户端和服务器库的版本兼容性问题。我遇到了类似的问题,并且能够通过在查看 https://socket.io/docs/v4/server-options/#alloweio3 后添加 https://socket.io/docs/v4/client-installation/#version-compatibility 来解决它们