uni-app中uni.WebSocket发送与接收数据类型相关问题
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
事件接收数据。以下是一些示例代码,展示了如何发送和接收不同类型的数据。
发送数据
- 发送文本数据
// 假设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);
}
});
- 发送二进制数据(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
发送和接收文本及二进制数据。在实际应用中,你可能需要根据具体需求对数据处理逻辑进行调整。