WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。
WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
今天简单讲解下微信小程序的webSocket如何使用:
以下webSocket是本人使用微信小程序api写的一些步骤封装,主要是小程序端的实现,真正实现webSocket项目还要后台人员的给力支持。
小程序中,可以在onLoad方法开始一个webSoket连接,在onHide时关闭连接。
var sotk = null; var socketOpen = false; var wsbasePath = "ws://开发者服务器 wss 接口地址/"; //开始webSocket webSocketStart(e){ sotk = wx.connectSocket({ url: wsbasePath, header: { 'content-type': 'application/x-www-form-urlencoded' }, method: "POST", success: res => { console.log('小程序连接成功:', res); }, fail: err => { console.log('出现错误啦!!' + err); wx.showToast({ title: '网络异常!', }) } }) this.webSokcketMethods(); }, //监听指令 webSokcketMethods(e){ let that = this; sotk.onOpen(res => { socketOpen = true; console.log('监听 WebSocket 连接打开事件。', res); }) sotk.onClose(onClose => { console.log('监听 WebSocket 连接关闭事件。', onClose) socketOpen = false; }) sotk.onError(onError => { console.log('监听 WebSocket 错误。错误信息', onError) socketOpen = false }) sotk.onMessage(onMessage => { var data = JSON.parse(onMessage.data); console.log('监听WebSocket接受到服务器的消息事件。服务器返回的消息',data); }) }, //发送消息 sendSocketMessage(msg) { let that = this; if (socketOpen){ console.log('通过 WebSocket 连接发送数据', JSON.stringify(msg)) sotk.send({ data: JSON.stringify(msg) }, function (res) { console.log('已发送', res) }) } }, //关闭连接 closeWebsocket(str){ if (socketOpen) { sotk.close( { code: "1000", reason: str, success: function () { console.log("成功关闭websocket连接"); } } ) } },