【问题标题】:Android Websocket Service Persistent ConnectionAndroid Websocket 服务持久连接
【发布时间】:2015-06-11 11:19:38
【问题描述】:

我在 Android 中使用 websockets 实现了一个聊天应用程序。但是,当用户关闭应用程序时,与服务器的 websocket 连接将丢失,并且无法接收到新消息。

我基本上迷路了,不知道该去哪里,如何在应用程序中设置服务以在用户登录时以及应用程序停止后保持与服务器的连接?

【问题讨论】:

  • Bump,你试过实现一个服务吗?它是否始终保持连接?我正在尝试做同样的事情

标签: android service websocket android-webservice


【解决方案1】:

众所周知,在 Android 上连续执行后台代码是不可行的;不同的 ROM 会在没有任何保证的情况下手动处理您的后台服务(例如,START_STICKY 不会让您的服务在某些设备上重新启动),因此我们需要尽我们所能使用 可靠的代码执行。

在这种情况下,您有一个 websocket 服务器向您的客户端提供连续信息。当您的应用程序处于后台时,它可能会丢失一些数据。当你的app回到前台时,你的信息可能不同步了,所以你需要再次和你的服务器同步,然后重新连接你的websocket。

在我的聊天应用程序中,我通过检查我的 websocket 服务是否在一个活动中运行onResume 来实现这一点,该活动是我想要访问聊天数据的所有活动的超类(即不是登录/注册活动)。如果服务未运行,我会通过从端点提取更改然后重新启动服务来同步我的数据。这样,即使后台杀掉了服务,一旦应用返回前台,我仍然会得到最新的数据和实时体验。

【讨论】:

  • 我实际上最终使用了 Google 的 firebase,为什么要重新发明轮子...?
  • Firebase 很棒,但是它的数据库不是那么灵活,我们已经有了自己的数据库,所以我们选择构建自己的 Firebase :)
  • @Sauron 为什么?也许是因为它sux? medium.com/@scosta/why-firebase-sucks-ce5d2302eb20
猜你喜欢
  • 2017-02-26
  • 2018-10-16
  • 2022-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多