版权声明: https://blog.csdn.net/Gochan_Tao/article/details/83899895
如何在小程序全局使用 webSocket
1)首先在 app.js 中初始化socket, onLaunch() 中调用 initSocket()
// app.js
globalData: {
localSocket: {},
callback: function() {}
},
initSocket() {
let that = this
that.globalData.localSocket = wx.connectSocket({
//此处 url 可以用来测试
url: `wss://echo.websocket.org/`
})
//版本库需要在 1.7.0 以上
that.globalData.localSocket.onOpen(function(res) {
console.log('WebSocket连接已打开!readyState=' + that.globalData.localSocket.readyState)
})
that.globalData.localSocket.onError(function(res) {
console.log('readyState=' + that.globalData.localSocket.readyState)
})
that.globalData.localSocket.onClose(function(res) {
console.log('WebSocket连接已关闭!readyState=' + that.globalData.localSocket.readyState)
that.initSocket()
})
that.globalData.localSocket.onMessage(function(res) {
// 用于在其他页面监听 websocket 返回的消息
that.globalData.callback(res)
})
},
//统一发送消息,可以在其他页面调用此方法发送消息
sendSocketMessage: function(msg) {
let that = this
return new Promise((resolve, reject) => {
if (this.globalData.localSocket.readyState === 1) {
console.log('发送消息', msg)
this.globalData.localSocket.send({
data: msg,
success: function(res) {
resolve(res)
},
fail: function(e) {
reject(e)
}
})
} else {
console.log('已断开')
}
})
},
2)在其他页面发送 socket 消息和接受 socket 消息,如在 pageA
// pageA.js
// 发送和接收 socket 消息
sendSocketMessage: function(msg) {
let that = this
return new Promise((resolve, reject) => {
app.sendSocketMessage(msg)
app.globalData.callback = function (res) {
console.log('收到服务器内容', res)
resolve(res)
}
})
},