59 lines
1.4 KiB
JavaScript
59 lines
1.4 KiB
JavaScript
|
// 初始化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();
|
|||
|
}
|