说在前边的一些废话;最近在复习一些基础知识。看到这块刚好整理一下 。如有说的不对的地方欢迎大家积极指出 微笑脸
简介
我们先来看一下轮询的概念
轮询:轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客户端的浏览器。
这种传统的HTTP request 的模式带来明显的缺点 – 浏览器需要不断的向服务器发出请求,然而HTTP request 的header是非常长的,里面包含的有用数据可能只是一个很小的值,这样会占用很多的带宽。
短轮询:短轮询就是浏览器每隔一段时间想服务器发送HTTP请求,服务器端在收到请求之后,无论是否有数据更新,都直接进行相应
这种明显的缺点就是由于需要不断的建立http连接,严重浪费了服务器端和客户端的资源。尤其是在客户端,距离来说,如果有数量级想对比较大的人同时位于基于短轮询的应用中,那么每一个用户的客户端都会疯狂的向服务器端发送http请求,而且不会间断。人数越多,服务器端压力越大,这是很不合理的。
因此短轮询不适用于那些同时在线用户数量比较大,并且注重性能的web应用.
WebSocket:WebSocket 是 html5 规范发布的新协议,和 http协议完全是两个不同的概念,或者说基本没关系;WebSocket 协议 和 http协议的唯一联系点在于,WebSocket 协议为了兼容现有浏览器的握手规范而采用了 http协议中的握手规范 以建立WebSocket连接;而且HTTP 协议做不到服务器主动向客户端推送信息。
WebSocket最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。
实例
var ws = new WebSocket("wss://echo.websocket.org"); //新建webSocket实例
ws.onopen = function(evt) { //连接成功之后的回调
console.log("Connection open ...");
ws.send("Hello WebSockets!"); //用于向服务器发送数据
};
ws.onmessage = function(evt) { //用于指定收到服务器数据后的回调函数。
console.log( "Received Message: " + evt.data);
ws.close();
};
ws.onclose = function(evt) { //连接关闭之后的回调
console.log("Connection closed.");
};
比较
总结
以上就是我对他们的理解。欢迎大家指出不足之处。
本文参考内容:
http://blog.csdn.net/pacosonswjtu/article/details/52035252
http://www.ruanyifeng.com/blog/2017/05/websocket.html
如有转载请标明出处。谢谢大家
这是我的GitHub大家有兴趣可以关注一下哈。