WebSocket有多种第三方,本文讲的是SocketRock的基本使用。
WebSocket与普通网络请求的区别
WebSocket是建立的长链接,既建立连接后持续受到数据,普通的网络请求建立一次连接后只能请求一次数据,想要再次请求数据必须再次建立网络连接。
WebSocket的使用场景
可以用来做实时通讯和实时绘制折线图之类的需要一直保持数据请求的地方,下面是使用websocket实时请求数据绘制实时折线图的demo链接,觉得不错给我github点个心哦。
demo链接 git@github.com:jiangbin1993/DrawLineChart.git
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;
}
扩展 使用浏览器应用Dark WebSocket Terminal来直接查看数据(也可直接在appstore上下载)
下面使用谷歌浏览器来示范
-
打开谷歌浏览器
2.找到应用(如果没有此应用 请自行下载)
Snip20161017_3.png
进入应用后看到这个
Snip20161017_4.png打开Dark WebSocket Terminal后有点像终端的界面
输入命令/connect + url 既可请求到数据
回车 可以看到已经在实时请求数据了
222.gif如果这篇文章对您有一点帮助请帮忙顺手点个喜欢哦。
网友评论