uni.connectSocket 中onMessage怎么用
时间: 2024-02-09 15:13:38 浏览: 47
`uni.connectSocket` 是一个小程序(微信/支付宝/百度/字节跳动)提供的 API,用于建立 WebSocket 连接。其中 `onMessage` 是一个回调函数,用于接收 WebSocket 服务器发送回来的消息。
当建立好 WebSocket 连接后,如果有消息从服务器发送过来,就会触发 `onMessage` 回调函数,同时将服务器发送的消息作为参数传入该函数。您可以在该函数中编写处理接收到消息的逻辑,例如解析消息内容、展示消息等。
以下是一个示例代码,展示了如何在 `onMessage` 中接收并展示 WebSocket 服务器发送的消息:
```javascript
uni.connectSocket({
url: 'ws://localhost:8080',
success() {
console.log('WebSocket连接成功')
}
})
uni.onSocketOpen(function () {
console.log('WebSocket连接已打开!')
})
uni.onMessage(function (res) {
console.log('收到服务器推送消息:', res.data)
})
```
在上面的代码中,`uni.onMessage` 回调函数中的 `res.data` 就是接收到的 WebSocket 服务器发送的消息内容。您可以根据实际需求进行修改,例如将消息展示到页面上等。
相关问题
uni.connectSocket 完整使用案例
以下是一个完整使用 uni.connectSocket 的案例:
```
// 建立 WebSocket 连接
let socketTask = uni.connectSocket({
url: 'ws://localhost:8080',
success: function() {
console.log('WebSocket 连接成功')
}
})
// 监听 WebSocket 连接打开事件
socketTask.onOpen(function() {
console.log('WebSocket 连接已打开')
// 发送消息
socketTask.send({
data: 'Hello, WebSocket!',
success: function() {
console.log('发送消息成功')
}
})
})
// 监听 WebSocket 接收消息事件
socketTask.onMessage(function(res) {
console.log('接收到消息:', res.data)
})
// 监听 WebSocket 连接关闭事件
socketTask.onClose(function() {
console.log('WebSocket 连接已关闭')
})
// 监听 WebSocket 连接发生错误事件
socketTask.onError(function() {
console.log('WebSocket 连接发生错误')
})
```
以上代码会建立一个 WebSocket 连接,然后监听连接打开、接收消息、连接关闭和连接错误等事件,可以在相应事件发生时执行相应的操作。同时,还可以使用 send() 方法向服务器发送消息。
uniapp websocket 全局使用 onOpen of null
如果您在使用uniapp中的websocket时遇到了“onOpen of null”错误,可能是因为您没有正确初始化websocket连接并将其设置为全局变量。
请尝试在App.vue文件中的onLaunch方法中初始化websocket连接,并将其设置为uni.$socket全局变量,示例代码如下:
```
// App.vue
export default {
onLaunch() {
// 初始化websocket连接
uni.$socket = uni.connectSocket({
url: 'wss://example.com/websocket',
complete(res) {
console.log('WebSocket连接已打开!')
}
})
}
}
```
然后,您可以在应用程序中的任何组件中使用uni.$socket全局变量来发送和接收websocket消息,示例代码如下:
```
// MyComponent.vue
export default {
mounted() {
// 发送websocket消息
uni.$socket.send({
data: 'Hello WebSocket!'
})
// 监听websocket消息
uni.$socket.onMessage(res => {
console.log('收到消息:', res.data)
})
}
}
```
通过这种方法,您可以将websocket连接设置为全局变量,并在应用程序的任何组件中使用它,避免了“onOpen of null”错误。