前段时间Boss 准备要把公司的app的及时通讯部分, 不采用第三方, 要自己写,要采用SignalR实现!!!!!!!!!
SignalR也是长连接的一种.什么是长连接呢,长连接->传输数据->保持连接 -> 传输数据-> 。。。 ->关闭连接,指建立连接后不管是否使用都保持连接。
好吧, 老板要求了, 我们只能乖乖的完成, 然后就开始是漫长的网上搜索, 各种开发群里求助的一段时光, 而且网上的关于OC-SignalR的资料特别少,最终 总算完成了基本配置,
是看了这个老哥的简书 实现的 地址:链接:https://www.jianshu.com/p/556a560de2a0
但是还是基于git上一个两年前上传的三方, 地址:https://github.com/DyKnow/SignalR-ObjC, 导入的时候 需要注意: AFNetworking的版本 2.6.3
AFNetworking的版本 2.6.3
AFNetworking的版本 2.6.3 重要的事情说三遍
pod导入成功后 command+b 一波, 有时候会出现 SignalR.h这个文件找不到, command+b 几次就好了,
然后下面就是重要的代码部分啦:
//接收信息
SRHubConnection *hubConnection = [SRHubConnection connectionWithURLString:@"http://test.xxxxx.com/"];
//这个就是SignalR连接的地址.由后台人员提供
self.chat = [hubConnection createHubProxy:@"ChatHub"];
//这个地方使用的时候要注意实体的使用chatHub.这个chatHub并不是固定的,是由后台人员给的.如果这个不对的话将会导致后面的回调方法不执行
[_chat on:@"Chat" perform:self selector:@selector(addMessage:)];
//注册方法,Chat: 后台人员一旦在后台调用了这个方法,只要移动端注册了这个方法就会立即执行
基本配置到这里就ok了,下面是一些方法
#pragma mark-----------连接使用
//连接开始
[hubConnection setStarted:^{
NSLog(@"连接开始");
}];
//接收到的数据
[hubConnection setReceived:^(NSString *message) {
NSLog(@"接收到的数据:%@", message);
_IDlabel.text = message;//这里是我自己显示的聊天记录
}];
//连接缓慢
[hubConnection setConnectionSlow:^{
NSLog(@"连接缓慢");
}];
//重新连接
[hubConnection setReconnecting:^{
NSLog(@"重新连接");
}];
//重新连接2
[hubConnection setReconnected:^{
NSLog(@"重新连接2");
}];
//关闭连接
[hubConnection setClosed:^{
NSLog(@"关闭连接");
}];
//连接错误
[hubConnection setError:^(NSError *error) {
NSLog(@"error%@", error);
}];
//认可连接
[hubConnection setReceived:^(NSString *data) {
NSLog(@"认可连接");
}];
下面是发送给服务器消息的方法
-(void)LogButton:(UIButton *)sender{
//发送
//这里只需要把字符串放到数组里OK了, 剩下的是后台解析, 为甚么是传数组, 我这里也很有点想不明白,
[_chat invoke:@"Chat" withArgs:Arr];
NSLog(@"我点了发送了" );
}
**
到这里基本的配置就完成了, 实现了一波通讯, 亲测可用,先写这么多吧, 以后用的时候在遇到问题, 会及时更新的, 恩 ,菜鸟攻城狮, 正在起航!!
**