如果没有关于这个故事的更多信息,我可以想到一些建议,我相信有很多方法可以解决这个问题。
情况 1:消息未经编辑发送到网站- 这是迄今为止最简单的情况,您可以使用Pusher.com(或类似的东西)而不是编写自己的服务器。Android Client 提供了一个 android 客户端。但这只有在您不想操纵 Android 和网站之间的消息时才有效。如果您希望服务器了解消息(例如出于日志记录的原因),您还可以让服务器收听与网站相同的频道。
------- -------- --------
Android ----> Pusher.com ------> Website
------- -------- --------
案例2:您的服务器需要在中间或者您需要拥有中间人-
这种设计可能比你想象的更狡猾。这仅取决于许多因素。
例如:
- 您的服务器需要水平扩展还是需要 HA?
- Android 设备是仅与一个 WebClient 通信还是向多个 WebClient 发布:1 对 1 通道或 pub/sub?
- 它有多少服务器处理跟上您的入站负载。
- 您是否需要检索 WebClients 离线时产生的消息。
- 您需要支持哪些浏览器/android 版本。
- ETC...
基于这些因素,您最终可能需要支持这样的设计:
--------
---------- out-channel -> WebClient0
| --------
------- -------- --------
Android -- in-channel --> server1 ---- out-channel -> WebClient1
------- | -------- --------
| -------- --------
\--> server2 ---- out-channel -> WebClient2
-------- --------
一些帮助您入门的基本框架:
- Pusher.com - 您可以在两个入站/出站通道之间使用您的服务器的两个推送通道。
- http://socket.io/ - 这是一个非常容易使用的 node.js 模块。它包含一个 JavaScript 库,是您出站渠道的绝佳选择。YFI:这个项目也有一个移植到 Java/Netty 的端口。
- http://aws.amazon.com/sqs/ - 这是 AWS 提供的分布式队列。由于跨源策略,它不适用于 Web 浏览器,但 Android 可以很好地向它提交消息。因此,它可以用于入站通道。另外(如 Pusher 通道)SQS 队列支持 pub/sub,因此您可以将消息发布到所有服务器。
有很多框架可以处理实时处理,但在不了解更多信息的情况下,我将限制对这些基础知识的回答。