用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类。