iOS WebSocket长链接的实现方法

2020-01-21 07:42:19于海丽

导入头文件后即可使用.

为求稳定,我的做法是copy的FaceBook里SocketRocket库到项目里. --> SocketRocket地址

1.首先创建一个名为 WebSocketManager 的单例类,


+(instancetype)shared;

2.创建一个枚举,分别表示WebSocket的链接状态


typedef NS_ENUM(NSUInteger,WebSocketConnectType){
  WebSocketDefault = 0,  //初始状态,未连接,不需要重新连接
  WebSocketConnect,    //已连接
  WebSocketDisconnect  //连接后断开,需要重新连接
};

3.创建连接


//建立长连接
- (void)connectServer;

4.处理连接成功的结果;


-(void)webSocketDidOpen:(RMWebSocket *)webSocket; //连接成功回调

5.处理连接失败的结果


- (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error;//连接失败回调

6.接收消息


///接收消息回调,需要提前和后台约定好消息格式.
- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessageWithString:(nonnull NSString *)string

7.关闭连接


- (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean;///关闭连接回调的代理

8.为保持长链接的连接状态,需要定时向后台发送消息,就是俗称的:心跳包.