2012-07-03 37 views
0

我想反覆(每秒)向其他Android設備請求GAE(如果android客戶端沒有創建或更改某些內容)的消息(對象或值)。我需要檢查它的速度,但我知道它每小時發生一次。使用restlet的異步android GAE通信

我使用restlet,我不想創建新的線程和每秒從該線程獲得輪詢,因爲這非常耗電。我也不想使用C2DM。

是否有可能做到這一點?我已經找到了一些關於NIO非阻塞HTTP連接器的位置:僅僅描述了客戶端,我也不知道,如果這個解決方案,甚至將有可能在GAE上,以及如何使用 http://restlet-code.1609877.n2.nabble.com/Push-data-from-server-using-a-live-HTTP-connection-td2906563.html

但在這裏。有沒有人知道更多關於這種方法?

非常感謝您提前。

+0

你爲什麼不使用C2DM? –

+0

我之所以沒有使用C2DM,是因爲我想讓它在restlet中,因此能夠在以後輕鬆地爲iPhone創建客戶端。 您認爲C2DM在這裏真的是很好的解決方案嗎?我猜如果給定的客戶端是iPhone或Android,並且決定是否使用C2DM或APNS,那麼我將不得不在邏輯上有所不同。我對嗎? GAE可以使用APNS嗎? 或者我應該更好地嘗試保持它在restlet? – ziky90

+0

C2DM正在逐漸被淘汰,轉而採用Android版Google Cloud Messaging。您也可以看看Google Cloud Endpoints。 –

回答

0

爲了將來的證明我建議你有一個單一的推送通知服務這兩種設備。你可以建立你自己的,或利用類似uniqushthis

而且城市飛艇的SDK將看一個不錯的選擇,更多的細節here

+0

我在看uniqush,它接縫很好,但只有很少的文檔。你有一些代碼示例如何使用它?你確定它在GAE上真的有效嗎? 城市飛艇非常昂貴,因此無法用於我的目的。 – ziky90

+0

我沒有用過。這些只是建議,你可以找到更多。這是否回答你原來的問題? –

+0

是的,它已經部分回答了我的問題,謝謝,但我仍然在等待,如果我從某人得到一些更具體的答案,以下部分: 這是否有可能做到這一點?我在這裏發現了一些關於NIO非阻塞http連接器的信息:http://restlet-code.1609877.n2.nabble.com/Push-data-from-server-using-a-live-HTTP-connection-td2906563.html 在我看來,這是最好的解決方案,但我無法找到更多關於它的信息。 – ziky90

0

this類似於城市飛艇,但只有一小部分的成本。 API允許您通過呼叫將C2DM消息發送給用戶。在實現廣播接收器後,當用戶安裝應用程序時,系統會提示他們接受消息。如果他們接受令牌發送給識別用戶的C2DM服務器。這個令牌然後用於通過C2DM平臺向他們發送消息。 Zend PHP框架已經內置了這個功能,但是如果可靠性是一個問題,請與遠程查詢或城市飛艇這樣的外部提供商聯繫。

1

作爲uniqush的作者,我在FAQ專門針對此問題創建了一個條目。

我可以在Google App Engine上使用uniqush嗎?

是和否。

如果您只是想在Google App Engine上使用GCM,那麼您可以直接使用uniqush-push中的一些代碼。

但是,由於Google App Engine不支持套接字連接,因此無法使用APNS。在另一項工作中,如果您想在Google App Engine上設置服務器,則無論您使用的是什麼軟件/庫,都不能向iOS設備發送任何通知。

我曾考慮將uniqush移植到Google App Engine。但是由於這個事實,我認爲在Google讓我們使用客戶端套接字連接或者提供某種連接APNS服務器的方式之前,可能會更好。

此外,如果您正在考慮將Google App Engine用作應用程序的服務器,請注意,您現在無法將通知推送到任何iOS設備。如果這個事實並沒有打擾你,那就去做吧。

就我個人而言,我建議您運行完全控制的服務器。現在並不昂貴。 Amazon EC2或類似的雲產品可能是運行uniqush的不錯選擇。

正如我上面所建議的那樣,如果您想要支持除Android之外的更多平臺,那麼使用完全控制的(虛擬)服務器將是更好的選擇。

如果還有其他問題,請隨時回覆。