// 初始化io对象 // import { host } from "@/utils/config.js"; import io from '@hyoga/uni-socket.io'; let mq = []; let audio = null; function makeVoice(msg) { audio = new Audio(msg); audio.play(); audio.addEventListener("ended", endCall); } function endCall() { if (audio) { audio.removeEventListener("ended", endCall); console.log("消息播放完毕"); } mq.shift(); if (mq.length) { makeVoice(mq[0]); } } let socket = io('http://7and5.cn' + ":2120"); // uid 其实就是网点ID,每个网点的ID是唯一的 // 当socket连接后发送登录请求 socket.on("connect", function () { console.log("socket连接成功"); mq = []; const uid = localStorage.getItem("outlets_id"); uid && socket.emit("login", uid); }); socket.on("connect_error", function (err) { console.log("socket连接失败,尝试重新连接"); setTimeout(() => { socket.connect(); }, 1000); }); socket.on("disconnect", function () { console.log("socket断开连接,重新连接"); setTimeout(() => { socket.connect(); }, 1000); }); // 当服务端推送来消息时触发 socket.on("new_msg", function (msg) { console.log(msg); const data = JSON.parse(msg); const path = host + data.data.path; mq.push(path); if (mq.length === 1) { // 当前队列中存在语音播报,不立即播放,存入语音队列 makeVoice(path); } }); export function reconnect() { socket.disconnect(); }