iOS网络相关网络iOS开发技术分享

WebSocket之SocketRock第三方的使用

2016-10-17  本文已影响163人  夜凉听风雨

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上下载)

下面使用谷歌浏览器来示范

  1. 打开谷歌浏览器
    2.找到应用(如果没有此应用 请自行下载)


    Snip20161017_3.png

进入应用后看到这个

Snip20161017_4.png

打开Dark WebSocket Terminal后有点像终端的界面
输入命令/connect + url 既可请求到数据

Snip20161017_5.png

回车 可以看到已经在实时请求数据了

222.gif

如果这篇文章对您有一点帮助请帮忙顺手点个喜欢哦。

上一篇 下一篇

猜你喜欢

热点阅读