webSoket 出现是因为普通的http请求,只是客户端发送请求,然后服务器接收,想要获取服务器端的消息只能通过Ajax请求,但h5之后出现的webSoket,打破了这一僵局~~~实现了客户端和服务器端全双工通信~
一,特点:建立连接之后一直保持连接状态。
var Socket = new WebSocket(url, [protocol] );
二,属性:
Socket.readyState---只读属性 readyState 表示连接状态,可以是以下值:0 - 表示连接尚未建立。1 - 表示连接已建立,可以进行通信。2 - 表示连接正在进行关闭。3 - 表示连接已经关闭或者连接不能打开。
Socket.bufferedAmount (buffererdAmount 缓冲挂载)只读属性 bufferedAmount 已被 send() 放入正在队列中等待传输,但是还没有发出的 UTF-8 文本字节数。
三,事件:
open---连接建立时触发
message---客户端接收服务端数据时触发
onerror---通信发生错误时触发
close---连接关闭时触发
四,方法
Socket.send()使用连接发送数据
Socket.close()关闭连接
五,示例
// 初始化一个 WebSocket 对象
var ws = new WebSocket("ws://localhost:9998/echo");
// 建立 web socket 连接成功触发事件
ws.onopen = function () {
// 使用 send() 方法发送数据
ws.send("发送数据");
alert("数据发送中...");
};
// 接收服务端数据时触发事件
ws.onmessage = function (evt) {
var received_msg = evt.data;
alert("数据已接收...");
};
// 断开 web socket 连接成功触发事件
ws.onclose = function () {
alert("连接已关闭...");
};
最后问答:
HTTP 和 WebSocket 有什么关系?
Websocket 其实是一个新协议,跟 HTTP 协议基本没有关系,只是为了兼容现有浏览器的握手规范而已,也就是说它是 HTTP 协议上的一种补充。
Html 和 HTTP 有什么关系?
Html 是超文本标记语言,是一种用于创建网页的标准标记语言。它是一种技术标准。Html5 是它的最新版本。
Http 是一种网络通信协议。其本身和 Html 没有直接关系。