原理和vue使用是一样的,这里就不多说了,可以去看我之前发的 websocket 的使用
传送门:WebScoket 使用教程
直接看代码:
(1)先创建一个ws的连接。
在各个小程序平台运行时,网络相关的 API 在使用前需要配置域名白名单。
data() {return {socketTask: '',...}
},
methods: {connectSocketInit(mid){// 创建一个this.socketTask对象【发送、接收、关闭socket都由这个对象操作】this.socketTask = uni.connectSocket({url: `wss://ws的地址`,success(data) {console.log("websocket连接成功lolo ");},});}
(2)发送初始订阅消息
- 当WebSocket连接打开时 (
onOpen
事件),将发送一条JSON格式的消息给服务器。 - 消息内容包括客户端信息、意图、客户端ID、组织ID和频道ID列表。
connectSocketInit(mid) {...var prmsg = `更具自己项目需要绑定发送的数据`;this.socketTask.onOpen((res) => { //发送消息this.socketTask.send({data: prmsg,});})
}
(3)接收并处理消息
- 使用
onMessage
监听器来接收从服务器发来的消息。
connectSocketInit(mid) {this.socketTask.onOpen((res) => { //发送消息...this.socketTask.onMessage((res) => {let evtObj = JSON.parse(res.data);console.log('ws推送', evtObj)})}}}
(4)关闭连接处理
- 使用
onClose
监听器来处理连接关闭的情况,当连接关闭时会在控制台输出 "ws已经被关闭"。
connectSocketInit(mid) {...// socket关闭执行this.socketTask.onClose(() => {console.log("ws已经被关闭")})
},
closeSocket() { //关闭链接this.socketTask.close({success(res) {console.log("关闭成功", res)},fail(err) {console.log("关闭失败", err)}})
},
注意:
- 确保在适当的地方调用
closeSocket()
来释放资源。 - 处理好错误和异常情况,保证用户体验。
- 安全性考虑:确保所有传输的数据都是加密的,并且只向授权的用户展示敏感信息
这样 uniapp 中 webSocket 就能使用了,其他可参照官网进行开发