为Android实现推送服务器端应用程序的最佳方法是什么?

时间:2015-03-12 19:22:17

标签: java android sockets server-side

我开发的Android应用需要2个(或更多)设备才能相互通信。 我尝试使用Google Cloud Messaging,但我很失望地发现GCM最大容量为100条消息,因此它已被破坏且不符合我的要求。

我在想java sockets。每个设备都会打开一个新的套接字(或保持其套接字打开)并与一组套接字(设备)通信。

为了以这种方式进行通信,我需要一个可以向客户端发送消息的服务器端应用程序(android设备)。所以我发现HTTP或网络服务对我没有帮助。我是对的吗?

对我来说,实现这样一个服务器端应用程序的最佳方式是什么?

2 个答案:

答案 0 :(得分:1)

您可以参考我之前提出并实施过的这个问题。它用于实现我自己的通知机制,但它同样(甚至更多)适用于聊天应用程序,因为消息队列非常适合该用例。

Building an Android notification server

我最终没有这样做,最后使用GCM,但我确实使用ActiveMQ和Paho 完成了一个完整的解决方案。你可以研究它们并理解它们的内部运作。它原则上很容易并且绝对可以,但问题是,您可能无法为iOSWP执行此操作,因为它需要在后台运行服务(以防您的应用未打开并且您希望确保消息至少在通知中发送。)

该问题的可能解决方案是使用通知服务(GCM或等效的)进行后台通知,然后使用MQ进行实际通信,但我认为这对我的项目来说太过分了。

如果你看看Paho,它将拥有一个完全正常工作的MQTT解决方案,即使手机没有“在线”(睡眠或其他方式)也能正常工作,并且有大量的ActiveMQ样本和多种编程语言的驱动程序。 / p>

我认为这个解决方案比在两个应用程序之间打开套接字要好得多,至少因为它们允许您保留消息并保证交付,这是聊天应用程序的一个重要方面。

答案 1 :(得分:0)

正如kha所说,选择其中一个消息队列协议是最佳解决方案。简要说明3个理由,

  1. 无论临时脱机还是长延迟,都可确保交付。
  2. 就像订阅/发布一样简单,不再担心传输层。
  3. 经纪人在线提供。您可以节省设置自己的时间和金钱。
  4. 对于像您这样的移动设备,我也会优先考虑MQTT。它重量轻且稳定。如果您对消息队列或MQTT完全不熟悉,请参阅此documentaionexample code

相关问题