import { createStore } from "vuex"; // import app from "main.js"; import { getCurrentInstance } from 'vue' export default createStore({ state: { socket: { // Connection Status isConnected: false, // Message content message: "", // Reconnect error reconnectError: false, // Heartbeat message sending time heartBeatInterval: 50000, // Heartbeat timer heartBeatTimer: 0 } }, mutations: { // Connection open SOCKET_ONOPEN(state, event) { console.log(event); const app = getCurrentInstance() app.config.globalProperties.$socket = event.currentTarget; state.socket.isConnected = true; // When the connection is successful, start sending heartbeat messages regularly to avoid being disconnected by the server // state.socket.heartBeatTimer = setInterval(() => { // const message = "Heartbeat message"; // state.socket.isConnected && // app.config.globalProperties.$socket.sendObj({ // code: 200, // msg: message // }); // }, state.socket.heartBeatInterval); }, // Connection closed SOCKET_ONCLOSE(state, event) { state.socket.isConnected = false; // Stop the heartbeat message when the connection is closed clearInterval(state.socket.heartBeatTimer); state.socket.heartBeatTimer = 0; console.log("The line is disconnected: " + new Date()); console.log(event); }, // An error occurred SOCKET_ONERROR(state, event) { console.error(state, event); }, // Receive the message sent by the server SOCKET_ONMESSAGE(state, message) { state.socket.message = message; }, // Auto reconnect SOCKET_RECONNECT(state, count) { console.info("消息系统重连中...", state, count); }, // Reconnect error SOCKET_RECONNECT_ERROR(state) { state.socket.reconnectError = true; } }, modules: {} });