最簡單的情況,當加入乙個命令包時,判斷當前網路狀態,若可用,執行命令,若不可用,放入列表中,當檢測到網路可用時,檢查列表中是否有命令包,有的話,開始依次執行
但這裡還有乙個問題需要考慮,當網路斷開以後,與伺服器的邏輯連線是否斷開了,如果是的(相當於未登入的時候),那麼網路再次可用後,列表中的命令包對於伺服器來說已經是無效的了,所以在網路重連後,需要將登入命令插入到列表的第乙個
這裡引入了邏輯連線,實際上不光是物理連線斷開會導致邏輯連線的中斷,在物理連線正常的情況下面,邏輯連線也會斷開,比如在網路狀況差的情況下面,心跳包沒有及時回應等,所以在傳送命令包前,不光要檢查物理連線,還要檢查邏輯連線是否正常
由於poster的內部狀態比較多,可以預期的變化也是存在的,如果使用其他的方式重連,使用其他的方式儲存邏輯連線等,我們引入狀態模式來代替大量的switch-case語句
@inte***ce posterstatus:nsobject
@end
@inte***ce posterstatusidle:posterstatus
@end
@inte***ce posterstatusconnecting:posterstatus
@end
@inte***ce posterstatusconnected:posterstatus
@end
@inte***ce posterstatusloging:posterstatus
@end
@inte***ce posterstatuslogin:posterstatus
@end
以上列舉了一些狀態,在需要按照poster狀態使用不同的處理時,可以按照如下方式呼叫:
-(void)postcommand:(command*)cmd
其中status是poster維護的當前狀態,是posterstatus的乙個子類 設計iOS平台CS架構客戶端的基本框架 接收模式
前面已經提到過,接收回應包的模式採用的是觀察者,在ios下面,我們可以直接使用nsnotificationcenter nnc nnc簡化了觀察者,將觀察物件與乙個全域性唯一的字串繫結在一起,比如我定義登入,獲取資訊,登出三個回應包對應的字串 extern nsstring const loginc...
CS架構客戶端軟體公升級方案
目的 概念 u 整包公升級 軟體功能進行了大範圍的變更,主版本號發生變化,客戶端需要重新安裝。u 補丁包公升級 軟體修復部分bug,功能進行了小範圍調整或變更。u 檔案公升級 軟體的個別檔案進行了細微的調整或bug修復,為最小粒度軟體公升級。框架 客戶端主要由公升級管理主程式和提供公升級功能的底層支...
客戶端架構介紹
這篇文章寫得比較中坑 記錄下 整個客戶端大體上是分為frame和game兩大部分.frame為框架層,通用於所有專案.game是遊戲層,只能寫當前專案才會用到的 frame 說是通用於所有專案有點誇大了,畢竟遊戲型別太多了,商業遊戲引擎都不敢說通用於所有遊戲,但這確實是這部分設計的初衷.其實這部分就...