12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- let websock = $ref(""); //webSocket使用
- let isConnect = $ref(false); //webSocket连接标识 避免重复连接
- let reConnectNum = $ref(1); //断开后重新连接的次数 免得后台挂了,前端一直重连
- const conceal = () => {
- websockList.value = [];
- };
- const websocketonopen = () => {
- // console.log("WebSocket连接成功");
- //连接建立后修改标识
- isConnect = true;
- };
- const websocketonerror = () => {
- console.log("WebSocket连接发生错误");
- //连接断开后修改标识
- isConnect = false;
- //连接错误 需要重连
- reConnect();
- };
- const websocketonmessage = (e) => {
- if (e != null) {
- // console.log('websocketclose', e)
- let str = JSON.parse(e.data);
- // category : "SYS"
- // content : "您有一个通知公告,请查阅!"
- // createTime : 1670322927873
- // createUser : "1543837863788879871"
- // deleteFlag : "NOT_DELETE"
- // id : "1600076448078106626"
- // msgType : 1
- // subject : "您有一个通知公告,请查阅!"
- websockList.value = JSON.parse(JSON.stringify(str));
- }
- };
- // webSocket连接关闭
- const websocketclose = () => {
- // console.log("webSocket连接关闭");
- isConnect = false;
- websock = "";
- reConnect();
- };
- // 尝试重新连接
- const reConnect = () => {
- if (reConnectNum > 6) {
- // console.log("重连超过6次不再重连");
- return false;
- }
- // console.log("isConnect", isConnect, $store.getters.userId);
- //如果已经连上就不再重试了
- if (isConnect && !$store.getters.userId) return;
- initWebSocket($store.getters.userId);
- reConnectNum = reConnectNum + 1;
- };
- const initWebSocket = (userId) => {
- // console.log("进入initWebSocket");
- // console.log("系统用户ID:" + userId);
- if (userId != null && userId != "") {
- // WebSocket与普通的请求所用协议有所不同,ws等同于http,wss等同于https
- const env = import.meta.env.VITE_API_BASEURL.split("://");
- let wsServer = `${env[0] === "https" ? "wss" : "ws"}://${
- env[1]
- }/socket/message/${userId}`;
- // console.info("location.protocol", wsServer);
- //线上环境
- //webSocket 前面加一个前缀xxx_websocket_ 区分后面其他项目的webSocket
- // let wsServer = "wss://域名地址或ip加端口/ nginx配置的 xxx_websocket/" + userId;
- websock = new WebSocket(wsServer);
- websock.onopen = websocketonopen;
- websock.onerror = websocketonerror;
- websock.onmessage = websocketonmessage;
- websock.onclose = websocketclose;
- }
- };
|