iOS SocketRocket使用
2018-01-08 本文已影响1458人
屈涯
iOS SocketRocket
一、简单介绍
SocketRocket是一个WebSocket客户端(WebSocket是适用于Web应用的下一代全双工通讯协议,被成为“Web的TCP”,它实现了浏览器与服务器的双向通信),采用Object-C编写。SocketRocket遵循最新的WebSocket规范RFC 6455。
二、如何使用
• socketRocket 支持pod,因此直接添加然后install
• 引入头文件
#import "SocketRocket.h"
• 遵循代理.
@interface HFSocketRocketViewController ()<SRWebSocketDelegate>
三、初始化SocketRocket
__weak HFSocketRocketViewController *weakSelf = self;
//Url
NSURL *url = [NSURL URLWithString:STOCK_SMALL];
//请求
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
//初始化请求`
weakSelf.webSocket = [[SRWebSocket alloc] initWithURLRequest:request];
//代理协议`
weakSelf.webSocket.delegate = self;`
// 实现这个 SRWebSocketDelegate 协议啊`
//直接连接`
[weakSelf.webSocket open]; // open 就是直接连接了
**三、实现代理**
- (void)webSocketDidOpen:(SRWebSocket *)webSocket {
NSLog(@"连接成功,可以立刻登录你公司后台的服务器了,还有开启心跳");
}
-(void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error {
NSLog(@"连接失败,这里可以实现掉线自动重连,要注意以下几点");
NSLog(@"1.判断当前网络环境,如果断网了就不要连了,等待网络到来,在发起重连");
NSLog(@"2.判断调用层是否需要连接,例如用户都没在聊天界面,连接上去浪费流量");
//关闭心跳包
[webSocket close];
}
- (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean {
//关闭心跳包
[webSocket close];
NSLog(@"连接断开,清空socket对象,清空该清空的东西,还有关闭心跳!");
}
- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message {
//收到数据代理方法
// 收到数据后,你要给后台发送的数据.
[webSocket send:@""];
}