客户端(android)从服务器接收消息(java)

时间:2011-09-18 19:00:05

标签: android android-c2dm

我正在尝试创建聊天应用程序。通信基于RESTful Web服务(Jersey)。客户端与发送HTTP请求的服务器通信。我的问题是如何在没有客户端首先发送请求的情况下将消息从服​​务器发送到客户端。我读到了有关C2DM通知的信息,我想用这种方式,当客户端从服务器收到通知时(客户端)必须向服务器发送请求才能接收数据。我也在考虑使用套接字,但我不知道是否可以使用Rest。我的意思是在服务器端,我还可以使用REST代码的套接字(在较低级别运行的套接字)吗?我唯一可以使用套接字工作的是创建另一个带套接字的服务器(两个服务器RESTful和socket),但这是一个很好的解决方案吗?我也可以在客户端放置一些服务器代码,在服务器端放置一些客户端代码。这是正确有效的吗?你怎么看?哪种解决方案最好?

2 个答案:

答案 0 :(得分:5)

C2DM已于2012年6月26日由谷歌正式弃用。鼓励现有C2DM开发人员迁移到新版本的C2DM,称为Google Cloud Messaging for Android(GCM)。

查看此链接以获取更多信息

http://developer.android.com/guide/google/gcm/index.html

答案 1 :(得分:1)

您描述的场景听起来非常适合C2DM。如果您构建自己的套接字设置,您将耗尽电池和CPU资源执行手机已经在做的事情 - 维护一个打开的套接字来接收消息。

C2DM的设置相对简单,而且根据我的经验非常可靠。

这是我见过的最好的教程:

http://www.vogella.de/articles/AndroidCloudToDeviceMessaging/article.html

但你还需要阅读官方文档:

http://code.google.com/android/c2dm/

您的服务器端代码需要向C2DM服务器发送HTTP请求以向设备发送消息。要告诉它在哪里发送消息,您的服务器需要指定注册ID(代表您在一个特定设备上运行的应用程序),因此当您的应用程序在Android设备上设置时,它会向C2DM注册,然后需要发送它的C2DM注册ID将存储到您的服务器,准备用于发送消息。

相关问题