| | |
| | | <script> |
| | | import DataView from './home/data-view/index.vue'; |
| | | import DataWrapper from './home/data-wrapper/index.vue'; |
| | | import { getToken } from '@/utils/auth' |
| | | |
| | | export default { |
| | | name: "Index", |
| | |
| | | |
| | | }; |
| | | }, |
| | | methods: { |
| | | senMsg(msg) { |
| | | // 发送文本消息 |
| | | this.$websocket.send(msg); |
| | | }, |
| | | // 发送心跳消息 |
| | | sendHeartbeat() { |
| | | if (this.$websocket.readyState === WebSocket.OPEN) { |
| | | // 发送心跳消息,可以是任意格式的字符串,用于表示心跳 |
| | | this.senMsg('ping'); |
| | | } |
| | | }, |
| | | // 开始心跳定时器 |
| | | startHeartbeat() { |
| | | this.heartbeatInterval = setInterval(() => { |
| | | this.sendHeartbeat(); |
| | | }, 10000); // 每 10 秒发送一次心跳 |
| | | }, |
| | | // 停止心跳定时器 |
| | | stopHeartbeat() { |
| | | clearInterval(this.heartbeatInterval); |
| | | }, |
| | | initWebsocket() { |
| | | this.$websocket = new WebSocket(process.env.VUE_APP_WEB_SOCKET_URL) |
| | | // 监听 WebSocket 连接成功事件 |
| | | this.$websocket.onopen = event => { |
| | | console.log('WebSocket 连接成功', event); |
| | | let msg = { |
| | | "token": getToken() |
| | | } |
| | | // 发送身份认证 |
| | | this.senMsg(JSON.stringify(msg)) |
| | | // 设置心跳定时器,定期发送心跳消息 |
| | | this.startHeartbeat(); |
| | | }; |
| | | |
| | | // 监听 WebSocket 接收消息事件 |
| | | this.$websocket.onmessage = event => { |
| | | const message = event.data; |
| | | console.log('接收到消息:', message); |
| | | }; |
| | | |
| | | // 监听 WebSocket 连接关闭事件 |
| | | this.$websocket.onclose = event => { |
| | | console.log('WebSocket 连接关闭', event); |
| | | // 清除心跳定时器 |
| | | this.stopHeartbeat(); |
| | | }; |
| | | }, |
| | | }, |
| | | mounted() { |
| | | this.initWebsocket(); |
| | | } |
| | | }; |
| | | </script> |
| | | |