websocket - 重新连接间隔
问题描述
我正在寻找处理服务器重启的最佳实践。具体来说,我将股票价格推送给使用 websockets 进行日间交易模拟 web 应用程序的用户。我有 10k 个并发用户。为了确保响应式用户体验,我在触发 onclose 事件时重新连接到 websocket。随着我们用户群的增长,我们不得不扩展我们的硬件。除了更好的硬件,我们在重新连接之前实现了随机延迟。这样做的目的是在服务器每晚重新启动时分散握手的涌入(持续部署)。然而,我们的一些用户的互联网很差(isp 和/或 wifi)。他们的联系不断下降。对于这些用户,我希望他们立即重新连接。这个问题有没有上述权衡的解决方案?
解决方案
问题是要求主观回应,这是我的:)
区分客户端断开连接和服务器关闭:这可以通过在 websocket 上发送关闭消息来实现,以便活动客户端可以准备并随机延迟重新连接。因此,在没有正确关闭广播的情况下遇到
onclose
事件的客户端将能够尽快重新连接。这意味着需要修改客户端应用程序以解决此特殊关闭事件。处理握手负载:一些 Web 服务器可以将传入连接作为异步并行事件队列处理,因此最多 X 个连接将同时初始化(并行),而其他连接将在队列中等待,直到轮到它们。这允许保护服务器性能,因此 websocket 握手将根据服务器的真实处理能力自动延迟。当然,这意味着 Web 服务器技术的改变,并且取决于您的用例。
推荐阅读
- python - 如何在截屏时隐藏此 GUI?
- python - “requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))”
- vba - 错误运行时错误 -2147024809 (80070057)
- java - 同步的 Autowired bean 不在服务器中工作,但在本地 Eclipse 中工作
- python - 如何在 python 脚本中运行 linux (ubuntu) 命令?
- javascript - 正则表达式只替换一个匹配项
- node.js - 如何在 html 页面中显示 MongoDB 数据
- html - html标签换行问题
- python - 在 Python 中使用多处理时队列未清除
- sql - sql语句从一个表中选择值,该表的名称来自另一个表