需要用到webSocket,所以搜集了一下使用方法,

git下载地址:square/SocketRocket

gitHUB 上没有看懂,就要 cocoaPod 导入了 socketRocket

导入这个包然后添加所需要的框架

导入头文件

#import "SRWebSocket.h"

代码的实现

#import <UIKit/UIKit.h>
#import "SocketRocket.h" @interface ViewController : UIViewController<SRWebSocketDelegate> @property (nonatomic,strong)SRWebSocket *webSocket; @end
#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *showTxt; @end @implementation ViewController - (void)viewWillAppear:(BOOL)animated{
[self Reconnect];
} - (void)viewDidDisappear:(BOOL)animated{
// Close WebSocket
self.webSocket.delegate = nil;
[self.webSocket close];
self.webSocket = nil;
} - (void)viewDidLoad {
[super viewDidLoad]; }
//初始化
- (void)Reconnect{
self.webSocket.delegate = nil;
[self.webSocket close]; self.webSocket = [[SRWebSocket alloc] initWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"ws://echo.websocket.org"]]];
self.webSocket.delegate = self; self.title = @"Opening Connection..."; [self.webSocket open];
}
//成功连接
- (void)webSocketDidOpen:(SRWebSocket *)webSocket {
NSLog(@"Websocket Connected");
self.title = @"Connected!";
}
//连接失败,打印错误信息
- (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error {
NSLog(@":( Websocket Failed With Error %@", error);
self.title = @"Connection Failed! (see logs)";
self.webSocket = nil;
}
//接收服务器发送信息
- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message {
NSLog(@"Received \"%@\"", message);
self.showTxt.text = message;
}
// 长连接关闭
- (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean {
NSLog(@"WebSocket closed");
self.title = @"Connection Closed! (see logs)";
self.webSocket = nil;
}
//该函数是接收服务器发送的pong消息
- (void)webSocket:(SRWebSocket *)webSocket didReceivePong:(NSData *)pongPayload {
NSString *reply = [[NSString alloc] initWithData:pongPayload encoding:NSUTF8StringEncoding];
NSLog(@"%@",reply);
} - (IBAction)sendAction:(id)sender { [self.view endEditing:YES];
// WebSocket
if (self.webSocket) {
[self.webSocket send:@"test success"];
}
}

有关这个方法需要说一下

-(void)webSocket:(SRWebSocket *)webSocket didReceivePong:(NSData *)pongPayload{
socketPong = socketPong + ;
}

其中最后一个是接受pong消息的,在这里就要提一下心跳包,一般情况下建立长连接都会建立一个心跳包,用于每隔一段时间通知一次服务端,客户端还是在线,这个心跳包其实就是一个ping消息,我的理解就是建立一个定时器,每隔十秒或者十五秒向服务端发送一个ping消息,这个消息可是是空的,例如
 NSData * data = [[NSData alloc]init];
  [_webSocket sendPing:data];
发送过去消息以后,服务器会返回一个pong消息,这个消息是解读不了的,但是每次返回时就会调用-(void)webSocket:(SRWebSocket *)webSocket didReceivePong:(NSData *)pongPayload这个函数,如果要用到话,可以像我做的那样,直接在该函数里面统计一下收到的次数,跟发送的次数比较,如果每次发送之前,自己发送的ping消息的个数,跟收到pong消息的个数相同,那就代表一直在连接状态,但是服务器发送pong消息时候是自动发送的,服务器是看不到客户端发送的ping消息的,同理,服务端也一样,只要服务端建立有心跳连接,那么服务端也是一直在发送ping消息,客户端一直在回复pong消息,这两个消息是处理不了的,没办法解读这个歌消息体里面的内容。还有一点就是在发送ping消息的时候,如果非要想在里面加入一些参数,这个参数不能太大,太大的话,会提示发送失败

//server的例子参考

//http://haoningabc.iteye.com/blog/2124605

webSocket开源框架:SocketRocket 简单的使用的更多相关文章

  1. 基于Facebook开源框架SocketRocket的即时通讯

    SocketRocket 介绍: SocketRock 是 Facebook 开源的框架,基于 WebSocket 客户端类库,适用于 iOS.Mac OS.tv OS.GitHub 传送门:http ...

  2. Android中Universal Image Loader开源框架的简单使用

    UIL (Universal Image Loader)aims to provide a powerful, flexible and highly customizable instrument ...

  3. 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发

    [原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文  http: ...

  4. Android中android-async-http开源网络框架的简单使用

    android-async-http开源网络框架是专门针对Android在Apache的基础上构建的异步且基于回调的http client.所有的请求全在UI线程之外发生,而callback发生在创建 ...

  5. IOS-常用第三方开源框架介绍

    iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角) 时间:2015-05-06 16:43:34      阅读:533      评论:0      收藏:0      [点我收藏+] ...

  6. iOS开发-常用第三方开源框架介绍

    iOS开发-常用第三方开源框架介绍 图像: 1.图片浏览控件MWPhotoBrowser        实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网 ...

  7. iOS超全开源框架、项目和学习资料汇总(5)AppleWatch、经典博客、三方开源总结篇

    完整项目 v2ex – v2ex 的客户端,新闻.论坛.apps-ios-wikipedia – apps-ios-wikipedia 客户端.jetstream-ios – 一款 Uber 的 MV ...

  8. 【转】iOS超全开源框架、项目和学习资料汇总

    iOS超全开源框架.项目和学习资料汇总(1)UI篇iOS超全开源框架.项目和学习资料汇总(2)动画篇iOS超全开源框架.项目和学习资料汇总(3)网络和Model篇iOS超全开源框架.项目和学习资料汇总 ...

  9. GitHub 上排名前 100 的 Android 开源库进行简单的介绍

    若有任何疑问可通过邮件或微博联系我 项目名称 项目简介 1. react-native 这个是 Facebook 在 React.js Conf 2015 大会上推出的基于 JavaScript 的开 ...

随机推荐

  1. hdu 5400 Arithmetic Sequence

    http://acm.hdu.edu.cn/showproblem.php?pid=5400 Arithmetic Sequence Time Limit: 4000/2000 MS (Java/Ot ...

  2. 关于 3750 vlan 设置

    >#config int vlan 1                \\进入vlan1,vlan 1 是默认存在的,你不能改名字,也不能删除.你也可以建个新的vlan做你的管理口. ip ad ...

  3. class str

    class str(object): """ str(object='') -> str str(bytes_or_buffer[, encoding[, erro ...

  4. css控制图片自适应大小

    相信大家做网页时经常会碰到大分辨率的图片会把表格涨破以致漂亮的网页面目全非,但只要使用以下的CSS语句即可解决.      该CSS的功能是:大于600的图片自动调整为600显示. <style ...

  5. C#和JavaScript的区别

    Strong and Loose Typing: 强弱比较 // C# var customer = new Customer(); //var is compiler inferred //Java ...

  6. IP路由协议简析

    RIP 路由信息协议 IGRP 内部网关协议 EIGRP 增强型内部网关路由协议 OSPF 开放最短路径优先   3种动态路由: 距离矢量:RIP/RIPv2  IGRP EIGRP 链路状态:OSP ...

  7. 11.聚合(Aggregation)

    聚合关系是关联关系的一种特例,它体现的是整体与部分的关系,即has-a的关系,此时整体与部分之间是可分离的,它们可以具有各自的生命周期.比如计算机与CPU.公司与员工的关系等.表现在代码层面,和关联关 ...

  8. 定制个性化的FlashPaper生成的文件

    1:找到已安装FlashPaper目录下的子目录Interface下的文件DefaultViewer2.swf,在此swf文件的基础上实现自己的修改. 2:利用swf反编译工具,这里推荐 硕思闪客精灵 ...

  9. nutch-2.2.1 hadoop-1.2.1 hbase-0.92.1 集群部署

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  10. Codeforces Round #338 (Div. 2) E. Hexagons 讨论讨论

    E. Hexagons 题目连接: http://codeforces.com/contest/615/problem/E Description Ayrat is looking for the p ...