WebSocket 提供了浏览器服务端双工通信的可能,改善了轮询带来的服务器压力和性能损耗,减少了http头信息重复低效的问题
WebSocket 对象
WebSocket 是一个构造函数是浏览器提供的原生 api
通过 new 关键字新建 socket 实例,接受一个 socket 服务器地址。
var socket = new WebSocket('ws://192.168.0.221:9999/websocket')
onopen 实例方法
onopen 方法会在和服务器三次握手成功后触发 代表成功建立链接
socket.onopen = function(res){
console.log('链接成功',res️)
}
send 实例方法
send 方法用于向服务器发送消息,需要在链接成功建立的条件下使用:
var socket = new WebSocket('ws://192.168.0.221:9999/websocket')
socket.onopen = function(res){
socket.send(JSON.stringify({
"event":"REGISTER_ONLINE", // 向服务器发送注册事件的消息
"data":{}
}))
}
onmessage 实例方法
onmessage 方法用于接受服务器推送过来的消息
socket.onmessage = function(res){
console.log('接收到服务端消息:',res)
}
onerror 实例方法
当服务发生异常时客户端会收到 error 事件通常可以在 onerror 事件内尝试重启 websocket
socket.onerror = function(res){
console.log('onerror')
// Restart your websocket
}
onclose 实例方法
当链接关闭后会触发 onclose 回调 通常用于关闭其他相关服务
socket.onclose = function(){
console.log('onclose')
// websoket 终止了关闭其他相关的函数和服务
}
(完)
还有一个对 websokit 的封装库 socket.io 不过目前我还没用过