WebSocket使用
WebSocket特点:服务器可以主动想客户端推送信息,客户端也可以主动向服务器发送消息,所有浏览器都支持建立在TCP协议上,服务端的实现比较容易与HTTP协议有良好的兼容性数据比较轻量级,性能开销小,通信高效可以发送文本,可以发送二进制数据没有同源策略,客户端可以与任意服务器通信协议标识符为ws,如果加密是wss,服务器网址就是URL客户端APIWebSocket对象作为一个构造函数,用于创建W
WebSocket
特点:服务器可以主动想客户端推送信息,客户端也可以主动向服务器发送消息,所有浏览器都支持
- 建立在TCP协议上,服务端的实现比较容易
- 与HTTP协议有良好的兼容性
- 数据比较轻量级,性能开销小,通信高效
- 可以发送文本,可以发送二进制数据
- 没有同源策略,客户端可以与任意服务器通信
- 协议标识符为ws,如果加密是wss,服务器网址就是URL
客户端API
WebSocket对象作为一个构造函数,用于创建WebSocket实例
var ws = new WebSocket( ‘ws://localhost:3000’ ) 执行这段语句后,客户端会与服务器进行连接 |
WebSocket.readyState
实例对象的当前状态,共四种
|
WebSocket.onopen
实例对象的onopen属性,用于指定连接成功后的回调函数,如果要指定多个回调函数,可以使用addEventListener方法
ws.onopen=function(){}
ws.addEventListener(‘open’,function(){}) |
WebSocket.onclose
实例对象的onclose属性,用于指定连接关闭后的回调函数
WebSocket.onmessage
实例对象的onmessage属性,用于指定收到服务器数据后的回调函数,event为服务器返回的数据对象
wx.onmessage=function(event){ var data = event.data }
服务器数据可能是文本,也可能是二进制数据(blob对象或者ArrayBuffer对象)
ws.binaryType返回连接所传输的二进制数据类型,返回值为字符串 ‘blob’或者’arraybuffer’ |
WebSocket.bufferedAmount
实例对象的buggeredAmount属性,表示多少字节的二进制数据没有发送出去,它可以用来判断发送是否结束
var data = new ArrayBuffer(10000000); socket.send(data);
if (socket.bufferedAmount === 0) { // 发送完毕 } else { // 发送还没结束 } |
WebSocket.onerror
实例对象的onerror属性,用于指定报错时的回调函数
WebSocket.send()
实例对象的send()方法用于向服务器发送数据数据
发送文本 ws.send(‘message’)
发送Blob对象的例子 var file = document.querySelect(‘ input[type=’file’] ’).file[0] ws.send(file)
发送ArrayBuffer对象的例子 var img = canvas_context.getImageData(0, 0, 400, 320); var binary = new Uint8Array(img.data.length); for (var i = 0; i < img.data.length; i++) { binary[i] = img.data[i]; } ws.send(binary.buffer);
|
WebSocket.close()
实例对象的close()方法关闭WebSocket连接
更多推荐
所有评论(0)