uni-app中uni.WebSocket发送与接收数据类型相关问题

发布于 1周前 作者 gougou168 来自 Uni-App

uni-app中uni.WebSocket发送与接收数据类型相关问题

uni.sendSocketMessage 设置发送数据的类型

uni.sendSocketMessage 如何设置发送数据的类型,String 还是 ArrayBuffer?

uni.onSocketMessage 判断接收数据的类型

uni.onSocketMessage 如何判断接收数据的类型是 string 还是 ArrayBuffer?

1 回复

在uni-app中使用uni.WebSocket进行WebSocket通信时,发送与接收的数据类型是一个常见的关注点。WebSocket本质上支持发送和接收二进制数据(如ArrayBuffer、Blob等)和文本数据(如String)。在uni-app中,你可以通过uni.WebSocket.send方法发送数据,并通过WebSocket实例的onmessage事件接收数据。以下是一些示例代码,展示了如何发送和接收不同类型的数据。

发送数据

  1. 发送文本数据
// 假设ws是已经创建并连接成功的WebSocket实例
const ws = uni.connectWebSocket({
    url: 'wss://example.com/socket',
    success: function (res) {
        console.log('WebSocket连接成功', res);
    },
    fail: function (err) {
        console.error('WebSocket连接失败', err);
    }
});

// 发送文本数据
ws.send({
    data: 'Hello, WebSocket!',
    success: function () {
        console.log('文本数据发送成功');
    },
    fail: function (err) {
        console.error('文本数据发送失败', err);
    }
});
  1. 发送二进制数据(ArrayBuffer)
// 创建一个ArrayBuffer并填充数据
const buffer = new ArrayBuffer(8);
const view = new Uint8Array(buffer);
for (let i = 0; i < 8; i++) {
    view[i] = i;
}

// 发送二进制数据
ws.send({
    data: buffer,
    success: function () {
        console.log('二进制数据发送成功');
    },
    fail: function (err) {
        console.error('二进制数据发送失败', err);
    }
});

接收数据

在接收数据时,你可以通过onmessage事件处理接收到的消息。根据消息的类型(文本或二进制),你可以相应地处理数据。

ws.onmessage = function (res) {
    if (typeof res.data === 'string') {
        // 处理文本数据
        console.log('接收到文本数据:', res.data);
    } else if (res.data instanceof ArrayBuffer) {
        // 处理二进制数据
        const view = new Uint8Array(res.data);
        console.log('接收到二进制数据:', view);
    } else {
        console.warn('未知的数据类型:', res.data);
    }
};

// 记得在不需要时关闭WebSocket连接
ws.close({
    success: function () {
        console.log('WebSocket连接已关闭');
    },
    fail: function (err) {
        console.error('WebSocket连接关闭失败', err);
    }
});

以上代码展示了如何在uni-app中使用uni.WebSocket发送和接收文本及二进制数据。在实际应用中,你可能需要根据具体需求对数据处理逻辑进行调整。

回到顶部