2013-11-14 73 views
0

我正在實施基於android的聊天。我想盡可能使它儘可能低。 原因很簡單 - 我想獲得更多關於事情如何工作的知識。 我正在使用套接字連接到服務器。使用單個套接字一切都很好,但我的問題是: 當用戶使用應用程序打開多個聊天窗口時,我需要多個連接。如果是這樣 - 建立這些連接的最佳方式是什麼。 我正在考慮使用類似Util類的東西,在需要時打開連接,但我仍然不太確定此類必須具有的架構。例如,將它變成一個單例類是否有意義?我將能夠跟蹤所有打開的連接,並在不再需要時關閉它們。 任何幫助,將不勝感激。在Android上處理用戶連接 - 體系結構提示

P.S.如果我錯過了一些東西,隨時告訴我什麼,我會嘗試編輯問題儘可能清楚。

回答

0

這顯然更多的是一個架構問題,但我會提供一些想法。我會說這取決於你的設置。

這聽起來像您連接到您的直接「接觸」,而不是使用一箇中央服務器。我假設你直接確定並使用IP地址來發起聊天會話。如果是這種情況,那麼是的,您需要爲每個正在進行的聊天會話打開一個連接。

相反,如果你使用的是聊天服務器,那麼理論上,你只需要一個連接到該服務器。當然,這個服務器將需要連接到每個用戶。使用聊天服務器需要您做更多的工作,但它可以提供更多的用戶友好體驗。例如,在服務器上註冊用戶名將允許您通過用戶名與其他人通話,而不必知道他們的IP。但是,您仍然需要通過衆所周知的IP地址或DNS名稱連接到您的服務器。

至於級的建築,我強烈建議你檢查出一些所謂的「依賴注入」。實踐中的依賴注入通常意味着你通過一個接口與服務和提供者交互。實現該接口的實際類也由您編寫,並在運行時「注入」。這使您可以將應用程序與特定技術或協議分離開來,這意味着有一天,您可以將自定義套接字實現替換爲Web服務實現,而無需更改使用該服務的代碼。另外,大多數依賴注入框架允許您指定類在注入時如何實例化和使用。您可以使用配置來指定是否有且僅有一個類將被實例化(實際上是單例),或者每次請求服務時將實例化新類。

+0

謝謝你的回答。我幾乎可以在任何地方使用DI(儘管我從來不知道它被稱爲那樣)。我們將有一箇中央服務器,並且我們決定使用觀察者模式,因此每次服務器向我們發送響應時,觀察者都會聽到並用相應的新消息更新UI。我們認爲這樣我們可以靈活地處理架構變化。請讓我知道這種方法是不是可取的。 –