大佬教程收集整理的这篇文章主要介绍了node.js – 通过websockets的Socket.io – 随机的“传输结束”断开连接,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Web应用程序. NodeJS Socket.io(仅限websockets,启用心跳).
问题
我的应用程序工作正常(它连接到Socket.io,它正确地发出/接收消息),但我检测到随机断开,而不是因为心跳超时.即使服务器从客户端收到心跳包,仍然可能在几秒钟内断开此客户端.我不明白原因.它几乎是随机发生的,大约每3-15分钟一次.更改socket.io配置似乎不会影响频率.
这是日志,它清楚地表明断开连接的原因不是心跳超时,而是传输端(套接字端):
日志:
debug: emitTing heartbeat for client cTVCsv2GS2R_lh3Ecao- debug: websocket wriTing 2:: debug: set heartbeat timeout for client cTVCsv2GS2R_lh3Ecao- debug: got heartbeat packet debug: cleared heartbeat timeout for client cTVCsv2GS2R_lh3Ecao- debug: set heartbeat interval for client cTVCsv2GS2R_lh3Ecao- info: transport end (socket end) // ^ Why? debug: set close timeout for client cTVCsv2GS2R_lh3Ecao- debug: cleared close timeout for client cTVCsv2GS2R_lh3Ecao- debug: cleared heartbeat interval for client cTVCsv2GS2R_lh3Ecao- SOCK 25.12 22:23:20.675 disconnection from IO detected (USER1) // ^ This means disconnected event fired debug: discarding transport debug: client authorized info: handshake authorized GPBLHsqhhrdsTeqTcao_ debug: setTing request GET /socket.io/1/websocket/GPBLHsqhhrdsTeqTcao_?conftoken=20519986772 debug: set heartbeat interval for client GPBLHsqhhrdsTeqTcao_ debug: client authorized for debug: websocket wriTing 1:: debug: client authorized for /io/activity debug: websocket wriTing 1::/io/activity SOCK 25.12 22:23:23.005 reconnected to IO (USER1)
组态
客户:
socket = io.connect('/io/activity',{'max reconnection attempts':Infinity})
服务器:
io = require('socket.io').listen(server,{ log: true,"close timeout": 120,"heartbeat timeout": 120,"heartbeat interval": 30,"transports": ["websocket"] }) io.enable('browser client minification') io.enable('browser client etag') io.enable('browser client gzip')
以上是大佬教程为你收集整理的node.js – 通过websockets的Socket.io – 随机的“传输结束”断开连接全部内容,希望文章能够帮你解决node.js – 通过websockets的Socket.io – 随机的“传输结束”断开连接所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。