uniapp小程序连接websocket类封装及调用示例展示

文章展示了如何封装一个WebSocketUtil类,用于处理WebSocket连接、监听消息和发送消息。在Vue3的setup函数中,创建WebSocketUtil实例并设置消息回调,实现在组件挂载和卸载时的连接与关闭。
摘要由CSDN通过智能技术生成

直接上代码:

1、封装类

/** +----------------------------------------------------------------------
 * | HelloCrab [ Best For You ! ]
 * +----------------------------------------------------------------------
 * | Copyright (c) 2022~9999 https://www.hellocrab.cn All rights reserved.
 * +----------------------------------------------------------------------
 * | Licensed 版权归属:HelloCrab
 * +----------------------------------------------------------------------
 * | Author: HelloCrab
 * +----------------------------------------------------------------------
 *                    _ooOoo_
 *                   o8888888o
 *                   88" . "88
 *                   (| -_- |)
 *                    O\ = /O
 *                ____/`---'\____
 *              .   ' \\| |// `.
 *               / \\||| : |||// \
 *             / _||||| -:- |||||- \
 *               | | \\\ - /// | |
 *             | \_| ''\---/'' | |
 *              \ .-\__ `-` ___/-. /
 *           ___`. .' /--.--\ `. . __
 *        ."" '< `.___\_<|>_/___.' >'"".
 *       | | : `- \`.;`\ _ /`;.`/ - ` : | |
 *         \ \ `-. \_ __\ /__ _/ .-` / /
 * ======`-.____`-.___\_____/___.-`____.-'======
 *                    `=---='
 **/

class WebSocketUtil {
    constructor(url) {
        this.url = url
    }

    connect() {
        this.socket = uni.connectSocket({
            url: this.url
        })
    }

    // 监听消息
    onMessage(callback) {
        uni.onSocketMessage((res) => {
            callback(res.data)
        })
    }

    // 发送消息
    send(message) {
        uni.sendSocketMessage({
            data: message
        })
    }

    // 关闭连接
    close() {
        uni.closeSocket()
    }
}

export default WebSocketUtil

2、调用示例:示例场景是 vue3的setup下的写法

import WebSocketUtil from '@/utils/WebSocketUtil'

/*websocket相关字段*/
const webSocketUtil = new WebSocketUtil('wss://your-websocket-url'), receivedMessage = ref('') // 用于显示接收到的消息
// 监听消息
const handleMessage = (message) => {
    receivedMessage.value = message.data
}
/*websocket相关字段*/
onMounted(() => {
    webSocketUtil.connect()
    webSocketUtil.onMessage(handleMessage) // 设置消息回调
})
onBeforeUnmount(()=>{
    webSocketUtil.close()
})

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基本的 WebSocket 封装示例,它使用了 uniappuni.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 出错时,需要进行错误处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值