uniapp的SocketTask多页面使用
时间: 2023-08-07 19:03:45 浏览: 113
在 Uniapp 中,可以使用 `uni.connectSocket` 方法创建 WebSocket 连接。在多页面中使用 WebSocket,可以通过 `uni.connectSocket` 方法返回的 `SocketTask` 对象来对 WebSocket 进行控制。以下是简单的示例代码:
1. 在 `App.vue` 中创建一个全局的 `SocketTask` 对象,并在创建 WebSocket 连接时将其赋值:
```javascript
export default {
globalData: {
socketTask: null
},
onLaunch: function() {
this.globalData.socketTask = uni.connectSocket({
url: 'ws://localhost:8080'
})
}
}
```
2. 在需要使用 WebSocket 的页面中,可以通过 `this.$root.globalData.socketTask` 来访问全局的 `SocketTask` 对象,从而控制 WebSocket:
```javascript
export default {
mounted() {
this.$root.globalData.socketTask.onOpen(() => {
console.log('WebSocket连接已打开!')
})
this.$root.globalData.socketTask.onError((error) => {
console.log('WebSocket连接打开失败,请检查!', error)
})
this.$root.globalData.socketTask.onMessage((res) => {
console.log('收到服务器内容:', res)
})
},
methods: {
sendMsg() {
this.$root.globalData.socketTask.send({
data: 'Hello WebSocket!'
})
}
}
}
```
在上面的例子中,我们在 `mounted` 钩子中监听 WebSocket 连接的状态、错误和接收到的消息,并在 `sendMsg` 方法中发送消息到服务器端。
需要注意的是,如果需要在多个页面中使用 WebSocket,最好将全局的 `SocketTask` 对象放在一个单独的 Vue 组件中,并在需要使用 WebSocket 的页面中引入该组件即可。
阅读全文