我正在尝试制作实时应用程序。我使用NodeJS作为服务器和Socket.IO来实现我的实时功能。
问题是我收到错误:
WebSocket connection to 'wss://localhost:1234/socket.io/?EIO=3&transport=websocket' failed: Invalid frame header
我尝试了很多东西,例如将https更改为http,降低Socket.IO版本等,但没有任何方法可以帮助我。请帮助我解决问题的原因,以便我可以查明我的应用程序中的错误。我不想去寻求其他COMET协议。
答案 0 :(得分:4)
好吧,这是我的错误,只是我用socket.io初始化服务器两次导致问题
答案 1 :(得分:2)
我跑
时解决了同样的问题npm install socket.io --save
基本上,我忘了在项目中安装socket。
答案 2 :(得分:0)
在服务器和客户端上使用相同版本的socket.io
和socket.io-client
。
答案 3 :(得分:0)
使用 socket.io-client 时,我目前遇到相同的问题。我已经按照以下说明解决了我的问题。
您可以尝试将opts.transports设置为仅在客户端中使用websocket:
io.connect(url, { transports: ['websocket'] }); // default is ['polling', 'websocket']
参考:https://github.com/socketio/socket.io-client/issues/1097#issuecomment-301301030
答案 4 :(得分:0)
将套接字io更改为使用其独立服务器,并且对我有用。最初将其添加到express创建的服务器中。 这段代码解决了这个问题。
const io = require("socket.io")();
//listening socket io on different port
io.listen(4000);
答案 5 :(得分:0)
对我来说,答案是我连接的是版本 2 的客户端,而服务器运行的是版本 4。作为 per the docs,我必须在服务器上启用 allowEIO3