微信小程序Socket的实现_基于socket-io
在小程序进行socket链接的时候发现:在1.7.0版本之前,一个微信小程序同时只能有一个 WebSocket 连接,如果当前已存在一个 WebSocket 连接,会自动关闭该连接,并重新创建一个 WebSocket 连接。而且在连接socket的时候,发现在还没有进行subscribe的情况下,就直接进行了广播,并且自动关闭了socket连接。
下面就介绍wxapp-socket-io基于socket-io的实现:
wxapp-socket-io的安装:
npm i weapp.socket.io或者
git clone https://github.com/wxsocketio/weapp.socket.io.git实现步骤:
1、小程序目录新建lib目录,把weapp.socket.io.js放入里面。
2、在utils目录下新建文件sockte.js,代码如下:
const io = require("../lib/weapp.socket.io.js")
const App = getApp()
let wsStatus = false
let onSocket = null
export const connect = function (cb) {
if (!onSocket) {
onSocket = io(App.globalData.socket)//socket的地址
onSocket.on('connect', function (res) {
cb(true, onSocket)
wsStatus = true
})
setTimeout(function () {//超时
if (!wsStatus) {
cb(false, onSocket)
}
}, 10000)
} else {
cb(true, onSocket)
}
}说明:在globalData中配置socket的地址。需要注意的在开发过程中如果是http对应的是ws://,上线后为https才使用wss://。
3、在需要使用的页面。代码如下:
const socket = require("../../utils/socket.js")
videoCallSocket: function (fn) {/**判断接听,挂断,超时的Websocket */
socket.connect((status, ws) => {
let data = {}//数据
this.ws = ws
if (status) {
ws.emit('login', JSON.stringify(data), res => {
if (res.resultCode == 2000) {
//登录成功
}
})
ws.on('callRequest', res => {
//code
}
})
},4、判断socket链接断开
ws.on('disconnect', (reason) => { //socket断开连接
console.log("socket断开,网络连接失败")
})本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!