【发布时间】:2019-06-11 07:43:35
【问题描述】:
我有一个使用 Socket io 在 Node JS express 上运行的聊天应用程序。
以前客户端在发送超过 4 MB 的大图片时会断开连接,我发现套接字 io 无法通过套接字发射事件在 Base64 中处理/流式传输/发送如此大的数据。所以我最终使用了这个socket io file upload module。 现在我正在使用 socket io 文件上传模块让用户在聊天期间上传图片/文件。现在,即使我上传最大的图像/文件,聊天也不会断开。
但是,即使只是在进行文本聊天,客户端仍然会随机断开连接并出现许多错误,例如 ping 超时、传输关闭等。
以下是我的套接字 io 客户端和服务器配置,我尝试使用 pingTimeout 和 pingInterval 值,但客户端仍然断开连接。
Socket IO 客户端配置:
Socket IO 服务器配置:
聊天断开时的客户端 JS 日志:
我的 socket io 客户端和服务器版本:
类似的问题,但尝试任何解决方案都没有运气:https://github.com/socketio/socket.io/issues/2769
我的应用有大约 500-800 个并发客户端在使用它。
我的应用程序部署的服务器规格:
- 32 GB RAM,8 个 vCPU,Ubuntu Lemp 16.04,节点版本 8.9.3
我的问题:
- 为了消除随机断开问题,我的套接字 io 客户端和服务器应该如何优化配置(例如 pingTimeout 和 pingInterval 等)?
- 我是否需要升级我的服务器规格以适应此类流量?如果是这样,我应该升级多少以及升级什么?
- 这可能是很多用户在使用socket io文件上传模块上传文件时,导致socket io服务器内存不足导致其他客户端断开连接的原因吗?我如何阻止这种情况发生?
【问题讨论】:
-
我面临同样的问题stackoverflow.com/questions/65934110/…。你解决了吗?
标签: node.js express websocket socket.io chat