Jeecg-boot/jeecg-uniapp-master/common/js-sdk/socket/socket.js
2024-10-26 21:49:53 +08:00

116 lines
2.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import configService from '@/common/service/config.service.js';
import store from '@/store/index.js';
import {ACCESS_TOKEN} from '@/common/util/constants.js'
class socket {
constructor(options) {
this.socketUrl = configService.apiUrl;
this.socketStart = false;
this.monitorSocketError();
this.monitorSocketClose();
this.socketReceive();
}
init(socket_type,callback) {
const _this = this;
if (configService.apiUrl) {
if(this.socketStart){
console.log('webSocket已经启动了');
}else{
let userid=store.state.userid?store.state.userid:store.getters.userid;
let url=this.socketUrl.replace("https://","wss://").replace("http://","ws://")+"/"+socket_type+"/"+userid+"_app";
console.log("启动this.socketUrl连接地址:",url);
// update-begin-author:lsq date:20230506 for:[issues/497]websocket连接打开失败
let token = uni.getStorageSync(ACCESS_TOKEN)
uni.connectSocket({
url: url,
method: 'GET',
protocols:[token]
});
// update-end-author:lsq date:20230506 for:[issues/497]websocket连接打开失败
uni.onSocketOpen((res) => {
this.socketStart = true;
callback && callback();
console.log('WebSocket连接已打开');
});
/*setTimeout(() => {
_this.getHeartbeat();
}, 5000);*/
}
}else{
console.log('config/baseUrl socketUrl为空');
}
}
//Socket给服务器发送消息
send(data, callback) {
const _this = this;
if (store.state.userid) {
data.userUid =store.state.userid;
}
console.log(data);
uni.sendSocketMessage({
data: JSON.stringify(data),
success: () => {
callback && callback(true);
},
fail: () => {
callback && callback(false);
}
});
}
//Socket接收服务器发送过来的消息
socketReceive() {
const _this = this;
uni.onSocketMessage(function(res) {
console.log("APP:----》收到服务器内容:",res);
let data = JSON.parse(res.data);
//console.log('收到服务器内容:', data);
_this.acceptMessage && _this.acceptMessage(data);
});
}
//关闭Socket
closeSocket() {
const _this = this;
uni.closeSocket();
_this.socketStart = false;
}
//监听Socket关闭
monitorSocketClose() {
const _this = this;
uni.onSocketClose(function(res) {
console.log('WebSocket 已关闭');
_this.socketStart = false;
setTimeout(function() {
//_this.init();
}, 3000);
});
}
//监听Socket错误
monitorSocketError() {
const _this = this;
uni.onSocketError(function(res) {
_this.socketStart = false;
console.log('WebSocket连接打开失败请检查');
});
}
//心跳
getHeartbeat() {
const _this = this;
this.send({
type: "心跳",
userUid: store.state.userid
}, (val) => {
setTimeout(() => {
if (val) {
//_this.getHeartbeat();
} else {
if(!_this.socketStart){
//_this.init();
}
}
}, 10000);
});
}
};
const mySocket = new socket();
export default mySocket;