如何使用WebSocket
首先要导入webSocket的包,git下载地址https://github.com/square/SocketRocket
导入
这个包,然后配置环境,导入需要用的框架
libicucore.dylib//这个现在Xcode里没有,需要自己找到资源后手动添加
CFNetwork.framework
Security.framework
Foundation.framework。
要记得添加pch文件。
然后编译,工程运行没有错误,进行下一步
在用到的ViewController里包含一下头文件
1.
3.一个测试用的接口ws://echo.websocket.org
4.必须实现的代理方法
-
(void)webSocketDidOpen:(SRWebSocket *)webSocket;
-
(void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error;
-
(void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message;
-
(void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean;
-
(void)webSocket:(SRWebSocket *)webSocket didReceivePong:(NSData *)pongPayload;
5,在第一个代理方法里发送请求
[_webSocket send:@“test success”];
在第三个代理方法里打印数据
在第四个代理方法里置为nil
_webSocket.delegate = nil;
1:什么是WebSocket
WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信–允许服务器主动发送信息给客户端。
1优点:
首先,Websocket是一个持久化的协议,相对于HTTP这种非持久的协议来说。简单的举个例子吧,用目前应用比较广泛的PHP生命周期来解释。1) HTTP的生命周期通过Request来界定,也就是一个Request 一个Response,那么在HTTP1.0中,这次HTTP请求就结束了。在HTTP1.1中进行了改进,使得有一个keep-alive,也就是说,在一个HTTP连接中,可以发送多个Request,接收多个Response。但是请记住 Request = Response , 在HTTP中永远是这样,也就是说一个request只能有一个response。而且这个response也是被动的,不能主动发起。
其优点就是,只要建立一次连接,就可以连续不断的得到服务器推送的消息,节省带宽和服务器端的压力
2 ajax轮询:
先说说是怎么实现ajax轮询的,下面先打个比方:
ajax轮询示例代码
$(function() {
to_page();
setInterval(“isHave();”,3000);
});
function isHave(){
$.ajax({
url : “localhost/isHave”,
data : {},
datatype: “json”,
type : “post”,
success : function(result) { console.log(result);
},
}
});
}
其缺点显而易见,每次都要建立HTTP连接,即使需要传输的数据非常少,所以这样很浪费带宽;同时,这个过程是被动性的,即不是服务器主动推送的。