WEB SOCKET的目标是在一个单独的、持久的连接上提供全双工,双向通信,在JS中创建WEB SOCKET之后,会有一个HTTP请求发送到浏览器以发起连接,服务器响应后,建立的连接就会使用HTTP升级变为WEB SOCKET协议(原来是HTTP协议)
此时未加密协议的连接是WS://,加密的是WSS:// 原来是HTTP://和HTTPS://
这种自定义协议的好处是,可以发送非常少的数据而不必像HTTP那样有字节级的开销,对移动端这种对带宽和延迟要求极高的场景尤为合适。
首先要创建一个WEBSOCKET对象,并传入URL
var socket=new WebSocket("ws://www.example.com/som.php");
这个链接必须用绝对链接,可以跨域到任何地方。
实例化之后,浏览器马上就会尝试创建链接,并有个状态码readyState属性,0=正在建立链接,1=已经建立链接,2=正在关闭链接,3=已经关闭链接,这个码永远从0开始。
我们再来发送一点数据。
socket.send("Hello");
注意Web Socket只能发送纯文本数据,所以如果发送复杂的格式的数据可以用JSON.STRINGFY来把数据序列化一下。
WEBSOCKET是双工通信,所以仅能发数据还不行,我们再收一点数据。
当服务器发来消息时,就会触发WEBSOCKET对象的MESSAGE事件,这个事件会把返回的结果保存在EVENT.DATA中。
socket.onmessage=function(event){
var data=event.data;
}
当然,得到的数据也是字符串,需要自己解析。