用CocoaAsyncSocket實現的socket客戶端: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類。