利用WebSocket 获取实时数据

[复制链接]
发表于 2025-11-14 21:22:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回车发送数据,模仿服务器发送数据
效果图:

源码:
  1. <template>
  2.     <div>
  3.       <h1>WebSocket 实时数据</h1>
  4.       <input type="text" v-model="ipt" @keyup.enter="sendMessage(ipt)">
  5.       <div v-if="message">
  6.         <h3>接收到的数据:</h3>
  7.         <pre>{{ message }}</pre>
  8.       </div>
  9.       <div v-else>
  10.         <p>等待 WebSocket 消息...</p>
  11.       </div>
  12.     </div>
  13.   </template>
  14.   
  15.   <script>
  16.   export default {
  17.     data() {
  18.       return {
  19.         ipt:'',
  20.         ws: null,  // WebSocket 实例
  21.         message: null,  // 接收到的消息
  22.         isConnected: false,  // 是否已连接
  23.       };
  24.     },
  25.     methods: {
  26.       // 初始化 WebSocket 连接
  27.       initWebSocket() {
  28.         const wsUrl = 'ws://124.222.224.186:8800'; // WebSocket 服务器 URL
  29.         this.ws = new WebSocket(wsUrl);
  30.   
  31.         // 连接打开时的回调
  32.         this.ws.onopen = () => {
  33.           console.log('WebSocket 已连接');
  34.           this.isConnected = true;
  35.         };
  36.   
  37.         // 接收到消息时的回调
  38.         this.ws.onmessage = (event) => {
  39.           console.log('收到消息:', event.data);
  40.           this.message = event.data.slice(19);  // 更新接收到的消息
  41.         };
  42.   
  43.         // 连接关闭时的回调
  44.         this.ws.onclose = () => {
  45.           console.log('WebSocket 连接关闭');
  46.           this.isConnected = false;
  47.         };
  48.   
  49.         // 连接错误时的回调
  50.         this.ws.onerror = (error) => {
  51.           console.error('WebSocket 错误:', error);
  52.         };
  53.       },
  54.   
  55.       // 发送消息到 WebSocket 服务器
  56.       sendMessage(message) {
  57.         if (this.ws && this.ws.readyState === WebSocket.OPEN) {
  58.           this.ws.send(message);
  59.           console.log('发送消息:', message);
  60.         } else {
  61.           console.log('WebSocket 连接未开启');
  62.         }
  63.       },
  64.     },
  65.   
  66.     // Vue 生命周期钩子
  67.     mounted() {
  68.       // 组件挂载时初始化 WebSocket 连接
  69.       this.initWebSocket();
  70.     },
  71.   
  72.     beforeDestroy() {
  73.       // 在组件销毁之前,关闭 WebSocket 连接
  74.       if (this.ws) {
  75.         this.ws.close();
  76.         console.log('WebSocket 连接已关闭');
  77.       }
  78.     },
  79.   };
  80.   </script>
  81.   
  82.   <style scoped>
  83.   h1 {
  84.     color: #333;
  85.   }
  86.   pre {
  87.     background-color: #f4f4f4;
  88.     padding: 10px;
  89.     border-radius: 5px;
  90.   }
  91.   </style>
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表