javascript Socket.io-client连接错误:WebSocket错误

1szpjjfi  于 2023-06-04  发布在  Java
关注(0)|答案(3)|浏览(415)

之前,我得到了输出“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);
});

经过一点研究,通过添加“运输:['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

xyhw6mcr

xyhw6mcr1#

默认情况下,客户端将尝试建立WebSocket连接,如果可能的话,将回退到HTTP长轮询,这解释了为什么您提到的第一个更改解决了轮询错误,但现在您有一个websocket错误。
如果它尝试自动重新连接,您可能需要启用CORS或设置凭据。如果不是,您应该尝试在超时后使用socket.connect()手动重新连接

jmp7cifd

jmp7cifd2#

这可能是客户端和服务器库的版本兼容性问题。我也有类似的问题,在查看www.example.com后添加www.example.com就解决了https://socket.io/docs/v4/server-options/#alloweio3https://socket.io/docs/v4/client-installation/#version-compatibility

e5nqia27

e5nqia273#

对于那些可能会遇到这个问题在未来(使用世博会React应用程序)我得到“WebSocket错误”,因为我的应用程序无法达到我的快递服务器在http://localhost:3000我不得不切换'localhost'为我的本地pc ip。
(how获取您的-> https://www.avast.com/c-how-to-find-ip-address#:~:text= You%20can%20find%20your%20local,listed%20next%20to%20IPv4%20address.)
我在服务器上所要做的就是添加

const httpServer = createServer(app);

httpServer.listen(PORT, 'your.local.ip', () => {
  console.log(`Server started on port ${PORT}`);
});

const io = new Server(httpServer, { cors: { origin: '*' } });

在我的委托人身上

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

export const socket = io('http://your.local.ip:3000', { transports: ['websocket'] });

socket.on('connect_error', (err) => {
  console.log(err.message);
});

注意,这只是本地开发的解决方案,而不是生产环境

相关问题