2013-07-28 59 views
2

我想在c#中創建一個跨平臺聊天應用程序與後端# 我搜索了這樣做的方法,並發現我可以這樣做與http請求處理程序我的服務器並相應地使用響應。 因此,直到現在我做了可以添加用戶,登錄,發送和接收使用數據庫存儲消息的處理程序。在c後端與跨平臺聊天應用程序的方法#

現在我正在製作Android客戶端,併爲用戶獲取消息我需要以特定間隔(3秒)執行http請求。

我覺得這不是一個好方法。我正在爲近30000名目標受衆製作這款應用。他們可以在一次會話中一對一地聊天。

我只是想知道我是否會朝正確的方向發展,或者有更好的方法來使用後端來製作聊天應用程序。

我聽說過wcf,但我不清楚應該採取什麼方法。請指導我介紹聊天應用程序的方法。

編輯 喜歡什麼應用程序的任何著名的聊天應用程序的小工作的一個例子,透過Facebook Messenger將是一個很大的幫助。 謝謝。

回答

3

你可以用HTTP做,但我會建議使用TCP代替。對於基於C#的TCP服務器,有一個非常穩固的基礎,其代碼爲codereviewright here這將概述如何處理Socket對象如何正確處理連接。

這樣做的主要好處是可以將客戶端連接到服務器,客戶端幾乎可以是任何語言,它不一定是C# - 只要語言支持套接字,你會沒事的。

最重要的是,您可以讓客戶端監聽服務器,從而不需要每隔幾秒輪詢服務器上的新消息;客戶端套接字將在服務器發送數據時接收數據,並且您可以幾乎實時地處理數據,而如果您每次都通過HTTP向服務器查詢新消息(例如3秒),您將始終結束延遲了你的聊天服務,這是我想你應該避免的。

請參閱上面鏈接的CodeReview I上的代碼示例,並閱讀關於Socket在C#中的工作方式,TCP如何在保證方面工作(TCP確保通過它發送的任何內容最終將在相同的順序,但不一定在一個數據包中,等等),並且我非常有信心,如果你把它全部用好,你就可以製作出優秀的聊天應用程序。

編輯:我只是注意到您的帖子上的WCF標籤。由於您希望實現跨平臺支持,因此我會親自爲此特定項目避開它;嘗試儘可能低的水平。

+0

感謝您的回覆,並且您是正確的,我希望能夠毫不拖延地以最小的負荷進行操作。我正在考慮套接字作爲現在的最佳選擇,但出於好奇,你能告訴我怎麼樣的應用程序,kik和類似的應用程序工作?他們是否也使用套接字? – CodetrixStudio

+0

我沒有特別關注那些,但我會假設他們這樣做。我非常懷疑他們每隔x秒輪詢一次服務器,尤其是在後臺運行CPU時間有限的移動平臺上。我只是在這裏猜測,但我認爲他們使用CPU時間來顯示通知,只要他們從服務器收到新消息。 – aevitas

+0

我剛剛在網絡瀏覽器中看到了套接字的工作方式,它的方式很酷。 – CodetrixStudio