2015-01-16 66 views
0

我正在創建一個類似viber的應用程序,即android用戶可以在其android設備上使用即時消息。我已經使用ASP.NET創建了客戶端到服務器的Web服務(具有JSON響應的ASMX服務),它的工作方式就像一個魅力,但另一方面,即服務器到客戶端的請求只是有點頭疼。當然,我可以製作我的應用程序,以便不需要服務器到終端的請求(在短時間內從客戶端發送虛擬請求到服務器),但這樣服務器會在用戶數量增加時特別過載。我發現了一些關於即時消息的技術,包括GCM和XMPP。我的其他選擇是什麼?或者讓我問一下我最好的選擇是什麼? 我應該使用套接字嗎?如果是這樣,我怎麼能始終擁有我的客戶IP(考慮到客戶是可能使用WiFi或GPRS/3G/4G互聯網的移動用戶)。我正在考慮一個系統,在這個系統中,我的客戶每隔n秒發送一次IP(n可以大約爲30),所以服務器總是有一個(近乎)最新的客戶IP列表。 這樣做是可能的還是合乎邏輯的?將數據從ASP.NET發送到android

回答

0

使用長輪詢的好老的策略始終是可能的,但也有很多更好的方法現在就做。這可能是所提到的最快實現(不是如果你想正確實現它,並且在你的服務器/數據庫引擎上負載最小)。我已經看到了一些圍繞該體系結構開始的項目,並希望在未來轉向更好的事情......並且當下的動作永遠不會出現。如果你開始瀏覽你的Android手機連接到像查爾斯這樣的代理服務器,你會看到我的意思:)

WebSockets是一個選項,但我沒有看到我將它用於類似Viber的原因應用程序,它是基於事件的(您收到了一條消息),而不是「實時」(例如監視某些股票圖形移動)。

這裏最好的選擇是a Google Cloud Messaging (GCM)!無論是在後端還是在客戶端上都很容易實現,它專門針對有問題的連接性構建(在wifi/poor 3g/4g/etc之間切換)。它具有一些相當不錯的功能,其他方法不提供「開箱即用」功能 - 消息重新發送(客戶端失去連接的常見場景--GCM稍後會在他上線時發送推送通知),自動在設備(智能手機,平板電腦等)和其他設備之間進行同步。

+0

對不起,我有完全相同的問題。我也覺得投票會在流量增加時阻止資源。有些人說使用推送通知?你嘗試過GCM嗎?你覺得@Ali_dotNet怎麼樣?什麼最適合你?我基本上感興趣的Asp.Net連接到我的Android設備,任何成功/提示? – user3833732

+1

推送通知與GCM完全相同:)確切地說,GCM代表Google雲消息傳遞,基本上是您用於實施推送通知的基礎架構。毫無疑問這個,肯定會去GCM! – Vesko