回收 Ably 实时连接

Posted

技术标签:

【中文标题】回收 Ably 实时连接【英文标题】:Recycle Ably realtime connections 【发布时间】:2019-02-13 11:47:36 【问题描述】:

我遇到了一个奇怪的问题。 在我们的应用程序(基于 React-native)中,我们托管了 70 个并发客户端,但监控页面中的峰值显示 380 个连接。 我假设客户端可能退出并返回或以某种方式重新加载应用程序,因此 Ably 连接再次重新生成,因此峰值增加。

现在的问题是:有什么方法可以强制 Ably 断开所有未使用的连接,从而降低峰值? (可能来自后端)

谢谢。

【问题讨论】:

【参考方案1】:

默认情况下,连接将保持活动状态,直到明确关闭(使用connection.close()),或在连接意外断开两分钟后允许connection state recovery。

浏览器环境中最近版本的 ably-js 会在页面重新加载时自动关闭连接(即,closeOnUnload 客户端选项默认为 true)——这只是将 connection.close() 添加到 beforeunload 处理程序.问题是在不使用该事件的 React Native 环境中不会做任何事情。

因此,您可能只需要使用 React Native 应用程序生命周期事件主动管理 Ably 连接。如果您不希望它在应用程序处于后台时保持活动状态,那么在后台应用程序的处理程序中(根据 React Native AppState event),关闭 Ably 连接。然后在应用再次激活时重新打开它(调用connect())。

由于其他可能的原因,您的峰值连接数可能高于预期,请参阅 Why are my peak connection counts higher than expected? 和 How does Ably count peak connections?。

【讨论】:

以上是关于回收 Ably 实时连接的主要内容,如果未能解决你的问题,请参考以下文章

FireBase 实时数据库:回收站视图未填充

Ably Pub/Sub 实时 ILoggerSink LogEvent 不工作

无法从 firebase 回收器视图中的 firebase 实时数据库中获取嵌套数据

在 Firebase 实时数据库中,我如何遍历每个产品并在回收站视图中显示它们的详细信息

java垃圾回收

Druid源码分析(八) DestroyThread扫描回收连接