| | |
| | | this.connected = false |
| | | this.url = '' |
| | | this.userId = '' |
| | | this.token = '' |
| | | this.onMessageCallback = null |
| | | this.onOpenCallback = null |
| | | this.onCloseCallback = null |
| | |
| | | } |
| | | |
| | | // 初始化WebSocket连接 |
| | | init(userId, url) { |
| | | init(userId, url, token) { |
| | | if (!url) { |
| | | console.error('WebSocket初始化失败:缺少url') |
| | | return |
| | | } |
| | | |
| | | this.userId = userId || '' |
| | | this.url = url + encodeURIComponent(this.userId) |
| | | this.token = token || '' |
| | | this.url = url |
| | | this.connect() |
| | | } |
| | | |
| | |
| | | try { |
| | | // 关闭现有连接 |
| | | this.close() |
| | | |
| | | // 使用uni-app的WebSocket API |
| | | this.socketTask = uni.connectSocket({ |
| | | url: this.url, |
| | | protocols: [this.token], |
| | | success: () => { |
| | | // console.log('WebSocket连接已请求') |
| | | }, |
| | |
| | | this.socketTask.onOpen(() => { |
| | | this.connected = true |
| | | // console.log('WebSocket已连接,userId:', this.userId) |
| | | this.startPing() |
| | | // this.startPing() |
| | | if (this.onOpenCallback) { |
| | | this.onOpenCallback() |
| | | } |
| | |
| | | this.socketTask.send({ |
| | | data: JSON.stringify(message), |
| | | success: () => { |
| | | // console.log('WebSocket消息发送成功:', message) |
| | | useGlobalWS(); |
| | | console.log('WebSocket消息发送成功:', message) |
| | | // useGlobalWS(); |
| | | }, |
| | | fail: (error) => { |
| | | // console.error('WebSocket消息发送失败:', error) |
| | |
| | | } |
| | | |
| | | // 开始心跳检测 |
| | | startPing() { |
| | | this.stopPing() |
| | | // 每25秒发送一次心跳 |
| | | this.pingTimer = setInterval(() => { |
| | | if (this.connected) { |
| | | this.send('ping', 'system') |
| | | } |
| | | }, 2000) |
| | | } |
| | | // startPing() { |
| | | // this.stopPing() |
| | | // // 每25秒发送一次心跳 |
| | | // this.pingTimer = setInterval(() => { |
| | | // if (this.connected) { |
| | | // this.send('ping', 'system') |
| | | // } |
| | | // }, 25000) |
| | | // } |
| | | |
| | | // 停止心跳检测 |
| | | stopPing() { |