2011-09-18 137 views
1

我正在嘗試創建一個聊天應用程序。該通信基於RESTful Web服務(澤西島)。客戶端與發送HTTP請求的服務器進行通信。我的問題是如何在沒有客戶端先發送請求的情況下將消息從服​​務器發送到客戶端。我讀了關於C2DM通知,我想用這種方式,當客戶端從服務器接收到通知時(客戶端)必須發送一個請求到服務器以接收數據。我也在考慮使用套接字,但我不知道是否可以使用Rest。我的意思是在服務器端,我還可以使用REST代碼使用套接字(套接字在較低級別運行)嗎?我使用套接字的唯一方法是使用套接字創建另一臺服務器(兩臺服務器爲RESTful和套接字),但這是一個很好的解決方案嗎?我也可以把一些服務器代碼放在客戶端和一些客戶端代碼在服務器端。它會是正確和有效的嗎?你怎麼看?哪種解決方案最好?客戶端(android)從服務器接收消息(java)

回答

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將被存儲到您的服務器上,準備用於發送消息。

+0

@奧利:ü可以上傳你已經爲C2DM創建,因爲我不能夠在我的Android應用程序來實現的示範項目。我需要使用PHP服務器。這是非常緊急的。正因爲如此,我不能完成我目前的[email protected]如果你可以給我發郵件,那將是有益的。謝謝你的幫助.... – Sumant

相關問題