使用连接通知重新连接逻辑

Posted

技术标签:

【中文标题】使用连接通知重新连接逻辑【英文标题】:Reconnect logic with connectivity notifications 【发布时间】:2010-09-06 18:22:55 【问题描述】:

假设我有一个需要与服务器建立持久连接的应用程序。如何实现连接/重新连接逻辑,这样我就不会浪费资源(功率/带宽),并且在连接出现/改善时我有快速的重新连接时间?如果我只使用连接通知,我可能会遇到与本地网络无关的问题。

如果你能告诉我C# 版本,那就太好了。

【问题讨论】:

【参考方案1】:

这是一个非常“巨大”的问题。我可以说我们使用了一个 O/R 映射器,并且对数据库的每个“查询”都需要一个名为 PersistenceBroker 的对象。这个类负责所有与连接、身份验证等相关的 DB Stuff。

我们编写了一个返回“工作”代理的 PersistenceBrokerFactory.GetCurrentBroker()。如果数据库突然失败(无论出于何种原因),CONN 对象将在 30 秒(或您定义的任何内容)后“超时()”。如果发生这种情况,我们会向用户显示他/她处于离线状态并显示重新连接按钮。

另一方面,为了提供用户已连接的视觉指示,我们在后台运行了一个线程,每 15 秒检查一次 Internet 连接。我们对 google.com 执行 1 次 ping 操作。 ;) 如果失败,我们假设 Internet 以某种方式损坏,我们更新状态栏。

如果您愿意,我可以向您展示网络健康监视器的所有代码。我从谷歌那里拿了一些东西,其他的都是我自己做的:)

【讨论】:

以上是关于使用连接通知重新连接逻辑的主要内容,如果未能解决你的问题,请参考以下文章

一段时间后 WebSocket 连接无法重新连接

SockJS Java 客户端自动重新连接

在重新连接、socket.io、node.js 时重用套接字 id

当 wifi 重新打开时,Ashley Mills 可达性不发送通知?

mysql 重新整理——逻辑架构[二]

mysql 重新整理——逻辑架构[二]