node.js - 回收 Ably 实时连接
问题描述
我遇到了一个奇怪的问题。在我们的应用程序(基于 React-native)中,我们托管了 70 个并发客户端,但监控页面中的峰值显示 380 个连接。我假设客户端可能退出并返回或以某种方式重新加载应用程序,因此 Ably 连接再次重新生成,因此峰值增加。
现在的问题是:有什么方法可以强制 Ably 断开所有未使用的连接,从而降低峰值?(可能来自后端)
谢谢。
解决方案
默认情况下,连接将保持活动状态,直到显式关闭(使用connection.close()
),或在连接意外断开两分钟后恢复连接状态。
浏览器环境中的最新版本 ably-js 会在页面重新加载时自动关闭连接(即,closeOnUnload
客户端选项默认为 true)——这只是connection.close()
添加到beforeunload
处理程序中。问题是在不使用该事件的 React Native 环境中不会做任何事情。
因此,您可能只需要使用 React Native 应用程序生命周期事件主动管理您的 Ably 连接。如果您不希望它在应用程序处于后台时保持活动状态,则在应用程序处于后台的处理程序中(根据 React Native AppState 事件),关闭 Ably 连接。然后在应用程序再次处于活动状态时重新打开它(调用connect()
)。
由于其他可能的原因,您的峰值连接数可能高于预期,请参阅为什么我的峰值连接数高于预期?以及Ably 如何计算峰值连接数?.
推荐阅读
- javascript - ReferenceError:在 express.js 中使用 mergeImages 时未定义窗口
- linux - netns:从另一个命名空间的默认命名空间执行命令
- git - git branch rebase 通用约定
- r - 我正在尝试检索与特定列中的内容相等的行
- android - 如何为 MDM 分发构建移动应用程序
- pandas - 使用 pandas 将带有月份名称的日期格式转换为正确的日期
- flutter - Flutter 异常:在 null 上调用了 getter 'latitude'。接收方:null 尝试呼叫:纬度
- css - 屏幕尺寸减小时如何将导航图像居中对齐
- linux - Doas 一直要求我输入密码
- codeigniter - 获取总金额并将其存储在另一张桌子上。(代码点火器)