WebSocket 基础知识
1、WebSocket 实例化
JavaScript中实例化 var ws = new WebSocket(url,protocols);
实例化时可以接受两个变量
1)、指向目标url,也就是服务请求的地址,url有两种方案:
一、WS 非加密流量 例如:"ws://localhost:8080/echo"
一、WSS 加密流量 例如: "wss://localhost:8080/echo"
2)、使用协议(可选参数):一、XMPP:可拓展消息处理现场协议。二、SOAP简单对象访问协议
2、WebSocket 事件
var ws = new WebSocket("ws://localhost:8080/echo");
1)open事件
一旦服务器响应了WebSocket请求,open事件触发,建立一个连接,open事件对应的回调函数为 onopen
ws.onopen = function (e) {
writeToScreen("Connected !");
doSend(textID.value);
};
2)message事件
message事件在接收消息时候触发,接收来自服务器的数据,回调函数为onmessage
ws.onmessage = function (e) {
console.log("Connection Open ......");
};
3)error事件
在响应故障时触发,回调函数onerror,错误还会导致WebSocket连接关闭,
ws.error = function (e) {
console.log("WebSocket errror ......");
handerError();
};
4)close事件
连接关闭时触发,回调函数onclose,一旦连接关闭,关闭的WebSocket服务不再接收和发送消息。
ws.onclose = function (e) {
console.log("Connection Closed:",e);
}
3、WebSocket 对象特性 readyState
特性常量 取值 状态
WebSocket.CONNECTING 0 连接正在进行,但还未建立
WebSocket.OPEN 1 连接已经建立,消息可以在客户端和服务端进行传递
WebSocket.CLOSING 2 连接正在进行关闭握手
WebSocket.CLOSED 3 连接已经关闭,不能打开
4、WebSocket 方法
1)send方法
调用send(data) 向服务器端发送消息,
注意:send方法只有在连接打开时候才可以发送数据,否则会抛出无效连接异常,发送案例
function myEventHandler(data) {
if (ws.readyState === WebSocket.OPEN) { //判断连接是否有效
ws.send(data);
} else {
// 无效可以进行重新连接
}
}
1)close方法
使用close(code,reson)方法,可以关闭WebSocket连接或者终止尝试连接,已经关闭则什么都不做,在调用close()之后,
不能在已关闭的WebSocket上发送任何请求
close方法有两个参数(通过两个参数,可以让服务器端知道为什么关闭连接)
一、code :数字类型状态代码
二、reson:文本字符串