IM網絡層設計

  • 協議層設計
  1. flag
  2. version
  3. command
  4. size
  5. header
  6. body
  • 架構設計
  1. 最底層: socket層,做最底層的TCP連接並且對接協議,包括消息的解包
  2. 中間層: 連接管理層, 用於對底層連接做管理。包括連接的ping策略,重連,握手,連接性能統計。
  3. 最上層,直接對接業務的一層。包括連接管理層配置信息拉取,日誌輸出,對外接口等等。

問題記錄:

1. windows上面如果網線斷開或者關閉wifi設置,socket層read函數是可以感知到的,但是在ios和android上如果手動斷網並不能立刻觸發read函數返回,可能是移動端在socket層沒有對這種情況進行處理。

2. 移動端在應用切到後臺後可能會將線程掛起,導致所有的邏輯不再運行。

對於以上兩種情況的處理方法:

ios或者android系統通知網絡變化時通知socket層進行斷開重連調整,可以細化重連策略。

無網->有網: 立即調用正常的重連策略

有網->無網: 間隔時間更長的重連策略

後臺->前臺: 在底層未感知到網絡斷開狀態下(ping超時等方法),判斷最後一條消息距現在的時間一般是4分鐘, 就要啓動重連機制。這樣如果在後臺沒有感知到斷開的情況下,可以立即進行重連。爲什麼是4分鐘,因爲一般情況下ios後臺應用超過4分鐘就會被掛起。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章