Web Sockets的目标是在一个单独的持久连接上提供全双工、双向通信。Web Sockets使用自定义的协议,未加密的连接为ws://;加密的连接为wss://;
1.首先创建一个Web Socket,先实例化一个WebSocket对象并传入要连接的URL:
var socket = new WebSocket("ws://www.example.com/server.php");
注意:必须传入绝对URL,同源策略对Web Sockets不适用,因此可以通过它打开到任何站点的连接,至于是否会与某个域中的页面通信,则完全取决于服务器。
实例化了Web Socket对象后,浏览器会马上尝试创建连接,WebSocket有一个readyState属性,值为0表示正在建立连接;值为1表示已经建立连接,值为2表示正在关闭连接,值为3表示已经关闭连接。
关闭Web Socket连接,可以在任何时候调用close()方法。
2.发送和接收数据
Web Socket打开之后,就可以通过连接发送和接收数据。要向服务器发送数据,使用send()方法并传入任意字符串,例如:
socket.send("Hello World");
Web Sockets只能通过连接发送纯文本数据,复杂的数据结构在通过连接发送之前必须进行序列化。
当服务器向客户端发来消息时,WebSocket对象就会触发message事件,该事件与其他传递消息的协议类似,也是把返回的数据保存在event.data属性中。
socket.onmessage = function(event){
var data = event.data;
...
}
3.其他事件
open:在成功建立连接时触发;
error:在发生错误时触发,连接不能持续;
close:连接关闭时触发;事件event对象有三个额外属性:wasClean--布尔值,是否已明确地关闭;code--服务器返回的数值状态码;reason--包含服务器发回消息的字符串;
注意:WebSocket对象对象事件不支持DOM2级事件侦听器,因此必须使用DOM0级语法分别定义每个事件处理程序。