WebSocket的有点在于,不用等客户端去请求,每当服务器有数据更新时,就会主动把数据发给客户端。它使用websocket协议,网络地址为ws://,而不是http://。既然是H5提出的技术,那么肯定存在兼容性问题。IE10以上支持。一个简单的检测浏览器支持不支持该技术的方式是 判断window.WebSocket=undefined与否。这里有一篇比较好的文章:http://blog.csdn.net/neco2011/article/details/52766082?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io 。 这篇文章里介绍了浏览器自带的接口使用方法:
if (window.WebSocket){
var socket = new WebSocket("ws://localhost:6677"); //建立连接
socket.onopen = function(){} //连接建立事件
socket.close() //断开连接
socket.onclose = function(){} //连接关闭事件
socket.send("xxxxx") //发送消息
socket.onmessage = function(){} //接收到消息的事件
}
socket.readyState =0,1,2,3分别对应了正在连接,连接成功,正在关闭和已经关闭四种状态。
WebSocket完全可以取代ajax。send是ajax的发送请求,onmessage就是接收到响应。
服务器端使用websocket还需要服务器的配合。node提供了ws和socket.io是比较常用的。这两个库其实都提供了服务器和客户端的方法。尤其是socket.io,对浏览器兼容性做了处理,对于不支持websocket的浏览器,能自动降级到ajax。
原文地址:https://www.cnblogs.com/yingge/p/5998606.html