【问题标题】:Invalid frame header帧头无效
【发布时间】:2017-09-17 12:08:24
【问题描述】:

我正在尝试制作一个实时应用程序。我使用 NodeJS 作为服务器和 Socket.IO,以实现我的实时功能。

问题是我收到以下错误:

 WebSocket connection to 'wss://localhost:1234/socket.io/?EIO=3&transport=websocket' failed: Invalid frame header

我尝试了很多东西,比如将 https 更改为 http,降低 Socket.IO 版本等,但对我没有任何效果。请帮助我解决问题的原因,以便我可以查明我的应用程序中的错误。我不想使用其他 COMET 协议。

【问题讨论】:

  • 你的服务器是如何实现的?
  • @robertklep 仅使用 socket.io
  • 但是如何?你能展示它的代码吗?
  • @robertklep 实际上没有什么可以显示我只是从 ui 执行 io.connect 的代码,它给了我错误,你能告诉我这个错误的可能原因
  • 可能的原因:反向代理配置错误,HTTP服务器配置错误,对HTTP服务器使用wss://或对HTTPS服务器使用ws://,使用不正确的catch-all路由,没有连接@ 987654324@服务器正确连接到HTTP/HTTPS服务器。

标签: javascript websocket socket.io


【解决方案1】:

在服务器和客户端上使用相同版本的socket.iosocket.io-client

【讨论】:

  • 你是一个聪明人,一个英雄,一个救命恩人
  • 谢谢,很高兴您的问题已通过此答案解决
【解决方案2】:

这是我的错误,只是我用 socket.io 初始化服务器两次导致问题

【讨论】:

  • 花了我几个小时才找到这个答案!!但你救了我的命。你是我发现的唯一一个有同样问题的人! :)))) 我欠你一杯咖啡
【解决方案3】:

对我来说,答案是我连接的是版本 2 的客户端,而服务器运行的是版本 4。作为 per the docs,我必须在服务器上启用 allowEIO3

【讨论】:

    【解决方案4】:

    我目前在使用 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

    【讨论】:

      【解决方案5】:

      更改了套接字 io 以使用其独立服务器,它对我有用。最初将其添加到由 express 创建的服务器。 这段代码解决了问题..

      const io = require("socket.io")();
      
      //listening socket io on different port
      io.listen(4000);

      【讨论】:

        猜你喜欢
        • 2015-09-24
        • 2020-11-17
        • 2019-04-23
        • 2021-01-30
        • 2018-09-18
        • 1970-01-01
        • 2019-04-10
        • 2012-03-21
        • 1970-01-01
        相关资源
        最近更新 更多