2012-10-01 216 views
1

我需要爲基於android的客戶端創建聊天/通信服務器。Android聊天服務器

Android的聊天客戶端將通過3G或WiFi網絡 連接到互聯網我需要以下幾個簡單的功能

  • 註冊一個新用戶
  • 從一個客戶端發送消息到另一個
  • 將有大約一次連接500個客戶端

來自桌面應用程序開發,我只有基於套接字的解決方案在我心中,服務器應該是一個基於Java的應用程序

所以問題是:基於套接字的方法是否可行或者我應該使用其他通信協議。

回答

0

服務器的另一端寫入的內容並不重要,因爲HTTP是高級協議。實際上,你可能最終會使用套接字,除非你做了一些關於GCM的事情。套接字是重量級的電池明智的,你可能只想在一段時間內保持套接字一次以檢查聊天服務器上的更新,速度與應用的使用成正比。另請注意,您無法在主線程上保留網絡連接,並且通常會通過服務訪問它。

5

雖然使用TCP套接字可以完成這項工作,但這不是一個好主意,因爲您需要處理很多東西,比如消息格式化,流式傳輸等。使用已經可用的消息協議和庫之一。

我建議看看XMPP,它有一套實現設備之間消息傳遞的開放標準。一個優點是有很多庫可用於實現XMPP客戶端和服務器。

要在Android設備上實現XMPP客戶端,可以使用名爲Smack的庫。它實際上是一個基於Java的庫。我已經使用Asmack實現了一個Facebook XMPP聊天客戶端,該客戶端是Smack的一個Android端口。 Smack文檔也適用於Asmack。不過,Asmack已經兩年沒有更新,並且有一些問題,我一直在考慮將我的客戶改爲Smack,以查看新版本是否適合Android。

至於實施一個XMPP服務器,你可以檢出Openfire,由製作Smack的同一個人制作。我還沒有使用過,但是項目頁面有關於設置Openfire的大量文檔。根據我使用的Smack庫的質量來判斷,我敢說Openfire會工作的很好。

祝你好運!

+0

此外,您應該考慮您的應用程序如何使用網絡,從性能的角度來看,還包括電池使用時間以及您使用的客戶數據量。這裏有一些關於這方面的文章http://developer.att.com/developer/forward.jsp?passedItemId=7200042,你也可以在Android上使用ARO工具來查看你的應用程序的效果如何http:// developer .att.com/aro –

+0

@RodBurns,感謝您的輸入! –