Socket.io 失败:WebSocket 在连接建立之前关闭

2023-12-22

问题

当使用 IP 地址和端口访问站点时,我使用 Socket.io 的 Twitter 流媒体应用程序工作正常,但当使用域名访问站点时,实时流媒体会抛出错误。 ????

尝试下面的链接,并打开开发者工具,查看错误

使用域名访问网站(http://sentiment-sweep.com http://sentiment-sweep.com)

数百个套接字错误遵循以下格式:

WebSocket connection to 
'ws://sentiment-sweep.com/socket.io/?EIO=3&transport=websocket&sid=guBmeCqsOr22CTsWAAC0' 
failed: WebSocket is closed before the connection is established.

使用 IP 和端口访问该站点(http://XXX.XX.XXX.XX:3003 http://XXX.XX.XXX.XX:3003)

最初出现一些上述套接字错误,但 10-15 秒后应用程序开始正常工作

背景

几年前,我为一个大学项目制作了这个 Node 应用程序。我保持更新。它使用 Socket.io 和 Twitter API 来流式传输实时推文、计算情绪并使用 D3 直观地显示结果。我使用 NGINX 进行端口转发。

作为参考,这是我的 git 存储库:https://github.com/Lissy93/twitter-sentiment-visualization https://github.com/Lissy93/twitter-sentiment-visualisation

最近我做了一个小的 HTML/CSS 更改,并更新了几个依赖项,这就是这个奇怪的 socket.io 问题开始的时候

到目前为止我尝试过的

  • 更改端口 - 没有区别
  • I use io.connect();没有要连接的参数
  • 包括本地的 socket.io,而不是来自 CDN
  • 这是否与我的网站非 SSL 有关?
  • 在本地它工作得很好,比 API 版本更快、延迟更少

以前有人见过类似的问题吗?


找到了解决办法,其实很简单!在这里发布答案,以帮助其他面临类似问题的人,因为我完全被这个问题困扰了两天!

我的问题是由依赖更新 https://github.com/Lissy93/twitter-sentiment-visualisation/commit/af307fd519ad2d372cf526248926eeb79a3c44c4#diff-b9cfc7f2cdf78a7f4b91a753d10865a2L45.

Socket.io V 2.0.0 不向后兼容。

根据发行说明:

新的(V 2.0.0)主要版本带来了一些性能改进,但也潜入发行说明的底部:

此版本不向后兼容,因为:

  • 与 engine.io-parser 中的 utf-8 编码相关的重大更改 (socketio/engine.io-parser#81)
  • 更新以使客户端上的套接字 ID 与服务器端的 ID 匹配 (socketio/socket.io-client#1058)

请注意,如果您使用自签名证书,rejectUnauthorized 现在默认为 true (socketio/engine.io-client#558)。

以下是完整的 V2 发行说明:https://github.com/socketio/socket.io/releases/tag/2.0.0 https://github.com/socketio/socket.io/releases/tag/2.0.0

解决方案是使用HTTPS

根据文档,使您的应用程序成为 https,或签署您自己的请求。作为一个快速修复,我刚刚降级回 socket.io V 1.7.0 并且它运行完美 ????

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Socket.io 失败:WebSocket 在连接建立之前关闭 的相关文章

随机推荐