uniapp中使用WebSocket

在 uni-app 中,uni.connectSocket 方法用于建立 WebSocket 连接,但它并不提供 onOpen、onMessage、onClose 和 onError 这样的方法作为回调函数。相反,你应该使用 uni.onSocketOpen、uni.onSocketMessage、uni.onSocketClose 和 uni.onSocketError 这些全局事件来监听 WebSocket 的不同事件。

javascript 复制代码
<template>  
  <view>  
    <button @click="connectWebSocket">连接WebSocket</button>  
    <button @click="sendWebSocketMessage">发送消息</button>  
    <button @click="closeWebSocket">关闭WebSocket</button>  
  </view>  
</template>  
  
<script>  
export default {  
  data() {  
    return {  
      socket: null, // WebSocket实例  
      isConnected: false, // WebSocket连接状态  
    };  
  },  
  methods: {  
    // 连接WebSocket服务器  
    connectWebSocket() {  
      if (!this.isConnected) {  
        this.socket = uni.connectSocket({  
          url: 'ws://your-websocket-server-url' // 替换为你的WebSocket服务器URL  
        });  
  
        uni.onSocketOpen(res => {  
          console.log('WebSocket连接已打开!');  
          this.isConnected = true;  
        });  
  
        uni.onSocketMessage(res => {  
          console.log('收到WebSocket服务器消息:', res.data);  
        });  
  
        uni.onSocketClose(res => {  
          console.log('WebSocket连接已关闭!');  
          this.isConnected = false;  
        });  
  
        uni.onSocketError(err => {  
          console.error('WebSocket连接打开失败,请检查:', err);  
        });  
      }  
    },  
  
    // 发送WebSocket消息  
    sendWebSocketMessage() {  
      if (this.socket && this.isConnected) {  
        uni.sendSocketMessage({  
          data: '这是一条测试消息' // 发送的消息内容  
        });  
      } else {  
        console.error('WebSocket未连接或未打开,请先连接WebSocket!');  
      }  
    },  
  
    // 关闭WebSocket连接  
    closeWebSocket() {  
      if (this.socket) {  
        uni.closeSocket();  
        this.socket = null;  
        this.isConnected = false;  
      }  
    }  
  },  
  beforeDestroy() {  
    // 在组件销毁前,确保关闭 WebSocket 连接  
    this.closeWebSocket();  
  }  
};  
</script>

我使用了 uni.onSocketOpen、uni.onSocketMessage、uni.onSocketClose 和 uni.onSocketError 来监听 WebSocket 的事件。同时,在 sendWebSocketMessage 方法中,我添加了对 socket 实例和连接状态的检查,以确保在发送消息之前连接是打开的。最后,在 beforeDestroy 生命周期钩子中,我调用了 closeWebSocket 方法来确保在组件销毁时关闭 WebSocket 连接。

相关推荐
发光小北7 小时前
四路can转WIFI在现场应用中有什么问题?
网络协议
2501_9159090617 小时前
iOS应用从开发到上架App Store的完整发布流程与步骤指南
android·ios·小程序·https·uni-app·webview
刘马想放假18 小时前
网络链路备份与高可用技术详解:从 Dual-WAN、LACP 到 SD-WAN 与 MPTCP
网络协议
Zelman18 小时前
第07章-数据中心网络
后端·网络协议
不爱说话郭德纲19 小时前
从“点点点”到一键出包:我把 uni-app x Android 离线打包做成了脚本
android·前端·uni-app
imDwAaY20 小时前
WebSocket 和 SSE 有什么区别?从实时通信到 AI 流式输出
后端·websocket
网络小江21 小时前
上网第四十八课:抓包实战入门——Wireshark 读懂第一个包
网络协议
墨香幽梦客21 小时前
SSL/TLS握手过程全拆解:从ClientHello到Finish的关键步骤与性能优化
网络协议·性能优化·ssl
snotJam1 天前
关于Uniapp的Android自定义基座使用
android·uni-app
神一样的老师1 天前
WS63 访问 HTTPS 握手失败(-0x7780)根治
数据库·网络协议·https