【问题标题】:Socket.io connection breaks on "socket.emit()" in some cases在某些情况下,Socket.io 连接在“socket.emit()”上中断
【发布时间】:2018-08-04 23:57:19
【问题描述】:

我正在用这个包https://github.com/MetinSeylan/Vue-Socket.io构建一个应用程序,其中node.js作为服务器,vue.js在前端

我正在从服务器向客户端发送大量数据(初始连接) Node.js 从 mongodb 加载数据。

所以在某些情况下,当我做一个

socket.emit()

连接中断(没有错误)并立即重新连接。这在一个无限循环中。

我发现问题曾经是由德语“元音变音”引起的,例如“ä、ö、ü”等。我通过这样做encodeURIComponent(JSON.stringify(myDataToSend))) 解决了这个问题,并在前端解码如下: JSON.parse(decodeURIComponent(payload))

所以现在这不再有帮助了,我不知道为什么。而且没有任何错误日志或我可以开始调试的东西,它只是断开并永远重新连接。

这会因为我要发送给客户的对象太大而发生吗? 我尝试一个接一个地以较小的包裹发送我的数据,但这并没有中断。我希望我能找到这样的问题。

感谢任何有关调试的建议或打包我的数据的想法。

【问题讨论】:

  • 多少兆字节?
  • 我发送了 493576 个字符。但是,我用 5066154 个字符向客户端发送了另一个包。 (大约 10 倍以上)而且这个不会造成任何问题!
  • 服务器有错误吗?试着抓?你能对这些数据进行抽样吗?还有示例代码,怎么发送数据?
  • @stdob-- 感谢您的意见。我可以通过修复 vue-socket.io 的使用来解决这个问题。

标签: node.js sockets encoding vue.js socket.io


【解决方案1】:

我找到了导致我的问题的问题。

注意:我仍然不知道为什么套接字连接在我的情况下崩溃,但我以“错误的方式”使用了包。 我做到了:

Vue.use(VueSocketio, 'http://socketserver.com:1923', store);

但是更好的方法是

Vue.use(VueSocketio, socketio('http://socketserver.com:1923'), store);

vue-socket.io 使用了一个非常旧版本的 socket-io.client,它只使用一个字符串作为连接,没有实际的 socketio 实例。

也许这对其他人有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    • 2014-01-17
    • 2020-06-20
    相关资源
    最近更新 更多