上个礼拜小程序用https,这礼拜要用websocket,好在小程序已经很好的支持websocket了 ,这里只是需要简单的封装下就可以,
先在app.js 中声明并初始化以下
startWebSocket: function () {
var that = this;
that.WebSocketInit()
wx.onSocketError(function () {
})
wx.onSocketMessage(function (data_) {
that.socketOperation(data_)
})
wx.onSocketClose(function (res) {
that.WebSocketInit()
})
},
//连接websocketWebSocketInit: function () {wx.connectSocket({url: this.data.wws,data: {},method: 'GET',success: function (res) {console.log("connectSocket 成功")},fail: function (res) {console.log("connectSocket 失败")}})wx.onSocketOpen(function () {// callbackvar mCmd = { "cmd": "connect.Connect", "data": {} }wx.sendSocketMessage({data: JSON.stringify(mCmd),success: function (res) {console.log("sendSocketMessage 成功")},fail: function (res) {console.log("sendSocketMessage 失败")}});
wx.onSocketMessage(function (data) {
console.log("onSocketMessage ", data)
})
})
},
然后在新建一个辅助js来发送和接收数据
function sendMessage() { var mCmd = { "cmd": "connect.getWlList", "data": { "mdd": "370600" } } wx.sendSocketMessage({ data: JSON.stringify(mCmd), success:function(res){ } }) } function resiverMessage(context) { wx.onSocketMessage(function (data) { context.onMessage(JSON.parse(data.data)) //这里定义一个onMessage方法,用于每个页面的回调
}) } module.exports = { formatNumber: formatNumber, judge: judge, sendMessage: sendMessage, resiverMessage: resiverMessage }
使用的话也很简单
onMessage: function (res) { this.setData({ data: res.data }); console.log(res); }, onLoad: function (options) { app.data.util.sendMessage(); app.data.util.resiverMessage(this)
结束;