我正在寻找一个应用程序,向 websocket 发送消息,以便在计算机内的特定参数发生变化时启用通知。参数在计算机中发生变化,通过 websocket 传输,然后到达我的应用程序。这部分是正确的,对吧?
即使我的应用程序关闭,我如何接收这些 websocket 通知?这就是后台数据吧?这应该很简单吗?我的应用程序在关闭时不需要向 Web 套接字发送消息。它所需要做的就是在关闭时接收消息。理想情况下,它会说“告诉我什么时候范围变化!'安装时,然后在安装到设备上时永远保持连接。
此外,网络套接字由第三方托管,因此我无权访问它可能提供的任何服务器设置。
编辑:我觉得我在这一切中错过了一个重要的概念。消息系统在关闭时如何接收推送通知?通过网络套接字,对吗?那么即使消息应用程序关闭,它也会收到数据吗?
过去几周我一直在研究类似的问题。这就是我所做的:
- 我正在使用 AutoBahn Android 来实现 WebSocket。我怀疑任何其他实现中的工作原理都应该有点相似。
- There are basically 3 calls to implement the websocket handler:
- onOpen()
- onReceiveMessage()
- 关闭()
- And 3 calls that you use in a websocket connection:
- 连接()
- 断开()
- 发信息()
- 现在这就是棘手的地方!您必须保持连接有效。我想到的第一个解决方案是显而易见的
Service
. But a Service
它本身并不是一个很好的方法,因为它将在应用程序的 UI 线程上工作。大多数时候,它会做它的事情,不会打扰你或对你造成任何伤害。然而,当你确实必须打开应用程序的用户界面时(我有一个界面,它对我很重要),它会给你带来无尽的委屈!无论如何,我似乎无法以非常完美的方式实现它(我的意思是我曾经多次失去连接)。
- 所以我扩展了一个 AsyncTask 并在
doInBackground()
方法我调用了一个函数mWSConnectionStart()
它基本上要求 WebSocketConnection 连接并执行其操作。与此同时,我postUpdate()
从 AsyncTask 以防我需要构建一个Notification
.
这对我来说效果很好,我希望这个方法也适合你。
PS:我一直无法解决的一个问题是CPU利用率高。愿你过得更好!
PSS:更新:我刚刚看到在我的设备上,Whatsapp(我一直在对我的应用程序性能进行基准测试)比我的应用程序具有更高的 CPU 利用率(电池)!也许它与 WebSockets 有关。
编辑:我真的建议使用 GCM 而不是 WebSocketConnections。我们正计划自己向 GCM 迈进。原因是它不需要太多的服务器端维护,而且它可以自动执行我们的许多任务。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)