node.js - Websocket 无故断开并出现 1006 错误
问题描述
我在我的网络游戏中记录断开连接。似乎 75% 的会话与代码 1001(正常)断开连接,而 25% 的会话与代码 1006(错误)断开连接。https://www.rfc-editor.org/rfc/rfc6455
有时由于错误原因,我会看到以下文字:
CloudFlare WebSocket 代理重新启动
但是他在 1006 次断开连接中的大多数根本没有给出任何理由。玩家完全没有理由断开连接。这通常发生在玩家积极玩游戏时的 5-30 分钟。
我的设置有这些:
- 节点.js
- Express.js
- Cloudflare
- 数字海洋
- 码头工人
- https://github.com/websockets/ws
- SSL
- Nginx 超时 = 3600s
- Ping/Pong isAlive = 30s
我的问题是:
- 我怎样才能更好地调试这个问题?
- 可能导致此问题的常见情况有哪些?
解决方案
此特定错误的原因是 Cloudflare 更新了其 SSL、防火墙、Nginx、物理服务器的软件或配置。
他们系统中几乎所有正在更新的堆栈都会踢出您的 websocket。您有 2 个解决方案:
- Websockets 不使用 Cloudflare
- 具有自动重新连接逻辑
推荐阅读
- c# - PostAsJsonAsync C# - 如何为 POST 请求正确设置标头 - BAD REQUEST 400
- javascript - ES6 中的动态条件链函数
- c++ - 从 void 函数返回某些东西时的奇怪行为
- ios - NSStringFromSelector 返回变量名而不是变量值
- python - Python:MemoryError,我的代码内存效率不高
- xml - 如何在字段后添加标签(Odoo 14)
- concatenation - 如何在 MSExcel (2013) 中完成数百个连接
- android - 即使我做了LEANBack_LAUNCHER,应用程序图标也没有隐藏
- c# - TransactionScope 读取单条记录
- sql - 按顺序和状态从表分区中选择