WebSocket功能很强大,不过技术也很复杂,需要加密解密,包装协议,三次握手等,这里推荐使用Socket.IO框架。
Socket.IO基于Node.js,支持WebSocket协议,用于实时通讯,是可以跨平台的开源框架。
Socket.IO包含了客户端(iOS/Android)和 服务器(Node.js)两端的代码。
Socket.IO移动端代码的使用:
Socket.IO只有swift代码,如果需要与OC混编,建议不要用Cocoapods,会出现未知问题,建议直接拖入。
如报错说当前swift版本过时,点击Xcode上方Edit => Convert => TO Current Swift Syntas 就好。
swift代码想在OC中使用,只要导入头文件“工程文件名-swift.h”即可,系统自动帮我们生成,生成可能略有延迟。(注意工程文件名中不能有“-”符号)
1.监听事件
- TCP/IP协议中,成功接收数据后会回复一个ACK数据,标记着是否成功传输
NSURL *url = [NSURL URLWithString:@"ws://192.168.0.100:8080"]; SocketIOClient *socket = [[SocketIOClient alloc] initWithSocketURL:url config:@{@"log": @YES, @"forcePolling": @YES}];
_socket = socket;
// 请求连接
[socket connect];
// 监听连接成功
// 1> 监听函数参数一:on -> 监听的事件名称
// 2> 监听函数参数二:callback -> 监听回调函数
// 1> 回调函数参数一: data -> 服务器响应的数据
// 2> 回调函数参数二: ask -> 确认请求数据
[socket on:@"connect" callback:^(NSArray * _Nonnull data, SocketAckEmitter * _Nonnull ask) {
NSLog(@"与服务器连接成功");
}];
2.发送数据
// 1> 参数一:事件名称
// 2> 参数二: 要传输的数据数组
[socket emit:@"chat" with:@[@"你好"]];