浏览器API 。Web Sockets的目标是在一个单独的持久连接上提供全双工,双向通信。
//要创建Web Sockets,先实例化一个websockets对象并传入要连接的的URL:
var socket = new Web Sockets("ws://www.123.com/server.php");
//注意:必须给websockets构造函数传入绝对URL。同源策略对Web Sockets不适用,
//因此可以通过它打开任何站点的连接。至于是否与某个域名的页面通信,则完全取决于服务器。
//实例化了websocket对象后,浏览器就会马上尝试创建连接。与XHR类似,websockets也有一个表示
//当前状态的readyState属性。不过这个属性的值与XHR并不相同。
WebSocket.OPENING(0):正在建立连接。
WebSocket.OPEN(1):已经建立连接。
WebSocket.CLOSEING(2):正在关闭连接。
WebSocket.CLOSE(3):已经关闭连接。
// WebSocket没有readystatechange事件;不过,他有其他事件,对应着不同的状态。readyState的值永远从0开始。
2. 发送和接受数据
Web Sockets打开之后,就可以通过连接发送和接受数据。要向服务器发送数据,使用send()方法并传入任意字符串。
var socket = new Web Sockets("ws://www.123.com/server.php");
socket.send("hello")
因为Web Sockets 只能通过发送纯文本数据,所以对于复杂数据类型数据结构,咋通过连接发送之前,必须进行序列化。
当服务器想客户端放来消息时,websocket对象就会触发message事件。这个meeage事件与其他传递消息的协议类似,也是把返回的数据保存在event.data属性中。
socket.onmeeage = function (event) {
var data = event.data;
// 处理数据
} // 与通过send()发送到服务器的数据一样。event.data中返回的数据也是字符串。如果想得到其他格式的数据,必须手工解析这些数据。
3. 其他事件
WebSocket 对象还有其他三个事件,在连接生命周期的不同阶段触发。
open: 在成功建立连接时触发。
error:在发生错误是触发,连接不能持续。
close:在连接关闭时触发。