我开发的Android应用需要2个(或更多)设备才能相互通信。
我尝试使用Google Cloud Messaging
,但我很失望地发现GCM
最大容量为100条消息,因此它已被破坏且不符合我的要求。
我在想java sockets
。每个设备都会打开一个新的套接字(或保持其套接字打开)并与一组套接字(设备)通信。
为了以这种方式进行通信,我需要一个可以向客户端发送消息的服务器端应用程序(android设备)。所以我发现HTTP
或网络服务对我没有帮助。我是对的吗?
对我来说,实现这样一个服务器端应用程序的最佳方式是什么?
答案 0 :(得分:1)
您可以参考我之前提出并实施过的这个问题。它用于实现我自己的通知机制,但它同样(甚至更多)适用于聊天应用程序,因为消息队列非常适合该用例。
Building an Android notification server
我最终没有这样做,最后使用GCM,但我确实使用ActiveMQ和Paho 完成了一个完整的解决方案。你可以研究它们并理解它们的内部运作。它原则上很容易并且绝对可以,但问题是,您可能无法为iOS
或WP
执行此操作,因为它需要在后台运行服务(以防您的应用未打开并且您希望确保消息至少在通知中发送。)
该问题的可能解决方案是使用通知服务(GCM或等效的)进行后台通知,然后使用MQ进行实际通信,但我认为这对我的项目来说太过分了。
如果你看看Paho,它将拥有一个完全正常工作的MQTT解决方案,即使手机没有“在线”(睡眠或其他方式)也能正常工作,并且有大量的ActiveMQ样本和多种编程语言的驱动程序。 / p>
我认为这个解决方案比在两个应用程序之间打开套接字要好得多,至少因为它们允许您保留消息并保证交付,这是聊天应用程序的一个重要方面。
答案 1 :(得分:0)
正如kha所说,选择其中一个消息队列协议是最佳解决方案。简要说明3个理由,
对于像您这样的移动设备,我也会优先考虑MQTT。它重量轻且稳定。如果您对消息队列或MQTT完全不熟悉,请参阅此documentaion和example code