用CocoaAsyncSocket实现的socket客户端:YiSocketClient

jopen 8年前

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.open-open.com/lib/view/home/1443358587961