2011-01-05 24 views
1

我正在iPhone上使用聊天應用程序(需要連接到服務器)。來自iPhone的發送數據包不應該是一個問題。iPhone上的套接字連接(IOS 4.x)

但我想知道是否有可能iPhone建立一個傳入的套接字連接到服務器連續或永遠在移動環境下。

或者我需要做什麼才能讓連接繼續?需要發送一些東西來保持它活着?

謝謝。

+0

是的,我們可以做到這一點 – GhostRider 2011-01-05 04:15:24

+0

SkyEagle888:你可以在你的應用程序和每個位置使用cllocation updater來更新它,updation socket會調用並更新數據給你,我們做這件事 – GhostRider 2011-01-05 06:49:29

回答

2

不知道你爲什麼要聊天的應用程序有持續的連接...我最好使用像模型一樣的短信。無論如何,Cocoa NSStream基於NSSocket並且允許很多功能。看看它。

對問題的回答。簡而言之,我會做什麼:

  1. 從服務器獲取身份驗證令牌。
    • 如果有必要,這也將照顧用戶的存在,但現在我們正在談論狀態;一旦知道存在,服務器就可以向通信活動的客戶端發送通知,並在其聯繫人列表中擁有用戶。
  2. 獲取用戶的聯繫人列表和聯繫人狀態。
  3. 當消息發送時,根據收件人狀態進行處理,即如果在線,則向另一用戶通信(如果脫機),以便稍後傳送或拒絕。
  4. 一旦令牌過期,拒絕具有適當錯誤的通信並使客戶端請求新的令牌。

從服務器到客戶端的通信,可以基於拉或推模式。在第一種情況下,客戶端定期發出請求並獲取所有消息。這聽起來可能不太好,但實際上,用戶組織和發送消息的頻率如何?一分鐘幾次?這不是太多。所以提取可能每5-10秒發生一次。

對於推送模式,客戶端必須能夠偵聽並接受連接。

最後,檢查SIP會話啓動協議。不需要使用它的完整版本。只是基本的東西。

這很粗糙,也許簡化了。我不知道您聊天系統的目標複雜程度。例如,最簡單的事情也可以是該服務器通過分發它們的端點來實現客戶端到客戶端的通信,並且客戶端自己處理所有事情。

祝你好運!

+0

其實,我們對實現它的方式。有沒有關於更一般的方法(如Whatsapp或eBuddy)的暗示? – SkyEagle888 2011-01-05 04:34:11

+0

@ Schultz999:我們用套接字編程製作一個iphone聊天應用程序,並且它總是在線顯示,當用戶離線時它顯示爲離線,我們不需要做任何額外的事情 – GhostRider 2011-01-05 06:48:00

+0

@GhostRider:好的,客戶端應用程序必須知道某種方式用戶下線了。它必須撥打電話刷新聯繫人列表狀態或必須提供該信息。它不能從稀薄的空氣中實現,對吧?所以你會怎麼做? – Schultz9999 2011-01-05 06:51:24

2

超級過時響應,但也許它會幫助下一個人。

我會使用xmppframework和jabber服務器。