Android 应用程序,打开与移动设备的连接
Posted
技术标签:
【中文标题】Android 应用程序,打开与移动设备的连接【英文标题】:Android app, open connection to to mobile devices 【发布时间】:2012-04-20 19:40:34 【问题描述】:在服务器和安卓应用程序之间创建双向持续通信的最佳方式是什么?
当我说持续通信时,我的意思是客户端向服务器请求数据或服务器不断向客户端推送数据。
据我所见,我不能使用 websocket,因为它们是服务器/浏览器设置的设计者。是对的吗?如果可以,有什么替代方案?
在 android 中是否有免费的框架可以处理这个问题?
我正在尝试做的是一个像聊天但适用于多人的应用程序。所以他们都将在他们的设备上进入一个“房间或频道”,然后以服务器处理的方式相互交互。
谢谢!
【问题讨论】:
伙计们,很抱歉花了很长时间才回复这个问题。感谢您的帮助。 【参考方案1】:据我所知,一种可能的方法是使用客户端可以连接到服务器的 Web 服务,如果 Web 服务是 RESTFul 有很多库可以访问它,其中之一是 apache HTTPClient,用于服务器推送我知道的唯一方法是 C2DM 将数据推送到客户端。
【讨论】:
【参考方案2】:对于持续打开的数据连接,您可以使用Sockets。但是您还应该考虑这样一个事实,即始终打开的连接也会很快耗尽您的电池电量。更多详情请阅读this和this
【讨论】:
【参考方案3】:你可能想看看 AutobahnAndroid:
https://github.com/tavendo/AutobahnAndroid
提供原生 Android/Java WebSocket 客户端框架(加上 WAMP = PubSub/RPC over WebSocket ..http://wamp.ws)。
这与服务器浏览器客户端的 WebSocket 服务器完全可互操作。
AutobahnXX 库(其中 XX = Python、JS、Android)是开源的 (Apache 2.0)。我们 (Tavendo) 正在提供基于 Autobahn 的商业虚拟设备:http://autobahn.ws
免责声明:我是 Autobahn 的作者,为 Tavendo 工作。
【讨论】:
【参考方案4】:但在 ios 和 Android 设备上保持连接在后台运行确实会消耗电池电量,对于遇到此问题的人,我建议在应用不在前台时使用推送通知。
【讨论】:
【参考方案5】:据我所见,我不能使用 websockets,因为它们是为 服务器/浏览器设置。是对的吗?如果可以,有什么替代方案?
Websocket 是一种 IETF/W3C 协议,因此它并不局限于特定的客户端平台。您可以使用 Android websocket 在 Android 和服务器端之间进行双向通信。对于 Android websocket 客户端,我推荐使用AndroidAsync。它拥有您在Android和服务器之间建立通信链接和交换数据所需的所有websocket API。
【讨论】:
以上是关于Android 应用程序,打开与移动设备的连接的主要内容,如果未能解决你的问题,请参考以下文章
在移动设备上运行 apk 后,python kivy android 应用程序崩溃