用CocoaAsyncSocket實現的socket客戶端:YiSocketClient

jopen 9年前發布 | 11K 次閱讀 iOS開發 移動開發 YiSocketClient

YiSocketClient是一個用CocoaAsyncSocket實現的基于ProtocolBuffers數據格式的socket客戶端.

warning:代碼沒有經過測試,僅供參考.

YiSocketClient

YiSocketClient是一個用CocoaAsyncSocket實現的基于ProtocolBuffers數據格式的socket客戶端. YiSocketClient其實只是一個我練習使用socket與protobuf的demo,僅供參考。首先使用protobuf主要是因為它省流量,數據量小,然后就是解析速度快。CocoaAsyncSocket則是一個比較流行的socket實現框架。YiSocketClient則把兩者很好的結合起來,構造了一個socket的客戶端部分。

使用方法

通過YiClientConnectManager類連接socket服務器,并且通過YiClientReceiveManager構建接收消息的回調。

    [[YiClientConnectManager shareInstance] startConnect];
    [[YiClientReceiveManager shareInstance] setupReceiveHandler];
    

通過YiClientReceiveManager的receiveModelBlock接收服務器發送的Model消息

[YiClientReceiveManager shareInstance].receiveModelBlock=^(SocketResponseModel *responseModel){
        if (responseModel.socketMessageResponseType==SocketMessageResponseTypeKSocketMessageResponseTypePerson) {
            //
        }else if (responseModel.socketMessageResponseType==SocketMessageResponseTypeKSocketMessageResponseTypeMonkey){
            //
        }
    };

通過YiClientSendManager的requestPersonInfo向服務器發送消息
- (void)requestPersonInfo{
    YiClientSendManager *sendManager=[[YiClientSendManager alloc] init];
    PersonRequest *personRequest=[[[PersonRequest builder] setPeronId:@"1"] build];
    [sendManager requestPersonInfo:personRequest];
}

類的介紹

YiSocketClientService class

提供基礎的socket連接與斷開,以及發送和接收數據。

YiClientConnectManager class

封裝了YiSocketClientService的連接模塊,提供連接和斷開連接。

YiClientReceiveManager class

封裝了YiSocketClientService的接收數據部分,通過receiveModelBlock回調接收的消息。

YiClientSendManager class

封裝了YiSocketClientService的發送數據部分,提供了發送數據的方法。

SocketRequestModel class

是一個socket請求model類,包括SocketMessageRequestType 和messageBody 兩個屬性,SocketMessageRequestType是請求類型,messageBody是ProtocolBuffers格式的發送數據內容,比如說PersonRequest類。

SocketResponseModel class

是一個socket返回的消息類,包括SocketMessageResponseType和messageBody兩個屬性,SocketMessageResponseType是返回數據的類型,messageBody是ProtocolBuffers格式的返回數據內容,比如說PersonResponse類。
 

項目主頁:http://www.baiduhome.net/lib/view/home/1443358587961

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!