您的位置:首页 > 其它

SocketRocket的基本使用方法

2017-01-18 15:59 736 查看

WebSocket与普通网络请求的区别

WebSocket是建立的长链接,既建立连接后持续受到数据,普通的网络请求建立一次连接后只能请求一次数据,想要再次请求数据必须再次建立网络连接。

WebSocket的使用场景

可以用来做实时通讯和实时绘制折线图之类的需要一直保持数据请求的地方

cocopods导入WebSocket

podfile 里写pod 'SocketRocket'

导入头文件设置代理

在需要用的地方导入#import <SocketRocket/SRWebSocket.h>

并遵循代理 SRWebSocketDelegate

声明一个全局的对象 SRWebSocket *webSocket;(声明一个webSocket属性也行)

设置socket建立连接

- (void)setSocket {
webSocket.delegate = nil;
[webSocket close];
webSocket = [[SRWebSocket alloc] initWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"ws://114.55.57.51:8282"]]];
webSocket.delegate = self;
NSLog(@"Opening Connection...");
[webSocket open];
}

SRWebSocketDelegate 代理方法实现

- (void)webSocketDidOpen:(SRWebSocket *)webSocket {
NSLog(@"Websocket Connected");
/*
// 如果需要发送数据到服务器使用下面代码
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:@{@"id":@"chat",@"clientid":@"hxz",@"to":@""} options:NSJSONWritingPrettyPrinted error:&error];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
[webSocket send:jsonString];
*/
}

连接失败

- (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error {
NSLog(@":( Websocket Failed With Error %@", error);
webSocket = nil;
// 断开连接后每过1s重新建立一次连接
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self setSocket];
});
}

收到消息

- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message {
NSLog(@"Received \"%@\"", message);
}

连接关闭

- (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean {
NSLog(@"WebSocket closed");
webSocket = nil;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: