websocket uniapp js封装
时间: 2023-09-12 19:10:10 浏览: 89
以下是一个基本的 WebSocket 封装示例,它使用了 uniapp 的 uni.connectSocket 和 uni.sendSocketMessage 方法。
```
// WebSocket.js
let socketTask = null
let isSocketOpen = false
function connectSocket(url) {
return new Promise((resolve, reject) => {
if (socketTask) {
reject(new Error('WebSocket is already connected'))
return
}
socketTask = uni.connectSocket({
url,
success() {
console.log('WebSocket connected')
resolve()
},
fail(err) {
console.error('WebSocket connect failed:', err)
socketTask = null
reject(err)
}
})
socketTask.onOpen(() => {
console.log('WebSocket connection opened')
isSocketOpen = true
})
socketTask.onClose(() => {
console.log('WebSocket connection closed')
socketTask = null
isSocketOpen = false
})
socketTask.onError((err) => {
console.error('WebSocket error:', err)
socketTask = null
isSocketOpen = false
})
})
}
function closeSocket() {
if (!socketTask) {
console.warn('WebSocket is not connected')
return
}
socketTask.close({
success() {
console.log('WebSocket closed')
socketTask = null
isSocketOpen = false
},
fail(err) {
console.error('WebSocket close failed:', err)
}
})
}
function sendSocketMessage(data) {
return new Promise((resolve, reject) => {
if (!isSocketOpen) {
reject(new Error('WebSocket is not connected'))
return
}
socketTask.send({
data,
success() {
console.log('WebSocket message sent:', data)
resolve()
},
fail(err) {
console.error('WebSocket message send failed:', err)
reject(err)
}
})
})
}
export default {
connectSocket,
closeSocket,
sendSocketMessage
}
```
使用时,可以按照以下方式调用:
```
import WebSocket from '@/utils/WebSocket'
// 连接 WebSocket
WebSocket.connectSocket('wss://example.com')
// 发送消息
WebSocket.sendSocketMessage('Hello, WebSocket!')
// 关闭 WebSocket
WebSocket.closeSocket()
```
需要注意的是,在使用 WebSocket 的过程中,需要确保以下几点:
1. 只有在 WebSocket 连接成功后,才能发送消息和关闭连接。
2. 发送消息和关闭连接前,需要检查 WebSocket 是否已连接。
3. 在 WebSocket 连接关闭后,需要将 socketTask 置为 null。
4. 在 WebSocket 出错时,需要进行错误处理。
阅读全文