demo-socket

在通过 WebSocket 或者 TCP Socket 进行通信时,如果服务器端期望接收 ArrayBuffer 类型的数据,那么客户端也需要相应地发送二进制数据。然而,对于字符串 "DDT1" 这样的文本数据,你需要先将其转换为二进制格式(如 Uint8ArrayArrayBuffer),然后再发送。

以下是一个使用 JavaScript WebSocket 客户端发送字符串作为 ArrayBuffer 并接收服务器端响应的基本示例:

客户端代码(JavaScript WebSocket)

// 假设已经建立了 WebSocket 连接,并且 ws 是你的 WebSocket 对象
const message = "DDT1";
const encoder = new TextEncoder(); // 用于将字符串转换为 Uint8Array

// 将字符串转换为 Uint8Array
const uint8Array = encoder.encode(message);

// 如果需要 ArrayBuffer,可以从 Uint8Array 转换
const arrayBuffer = uint8Array.buffer;

// 发送 ArrayBuffer
ws.send(arrayBuffer);

// 接收服务器的响应
ws.onmessage = function(event) {
    // 注意:这里 event.data 可能是 ArrayBuffer、Blob、String 或其他类型,取决于服务器发送了什么
    if (event.data instanceof ArrayBuffer) {
        // 转换为 Uint8Array 进行处理
        const uint8ArrayResponse = new Uint8Array(event.data);
        // 如果服务器发送的是文本,你可能想要将其转换回字符串
        const decoder = new TextDecoder('utf-8');
        const responseString = decoder.decode(uint8ArrayResponse);
        console.log('Received:', responseString); // 应该打印 "ok"
    } else if (typeof event.data === 'string') {
        // 如果服务器直接发送字符串,则直接处理
        console.log('Received:', event.data);
    }
};

服务器端代码(Node.js 示例)

在服务器端(假设使用 Node.js),你可能会使用 ws(WebSocket)或 net(TCP)模块。以下是使用 ws 模块的一个简单示例,展示如何处理接收到的 ArrayBuffer 并发送回字符串 "ok":

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', function connection(ws) {
    ws.on('message', function incoming(data) {
        // 检查接收到的数据是否是 ArrayBuffer
        if (data instanceof ArrayBuffer) {
            // 转换为 Uint8Array 或其他你需要的格式
            const uint8Array = new Uint8Array(data);
            // 在这里你可以处理 uint8Array 中的数据

            // 假设你要发送回 "ok"
            const encoder = new TextEncoder();
            const okBuffer = encoder.encode('ok');
            ws.send(okBuffer); // 发送 ArrayBuffer
        }
    });
});

请注意,上述示例假设你正在使用 WebSocket 通信,并且服务器和客户端都正确配置了 WebSocket 连接。如果你使用的是 TCP Socket,那么你需要使用不同的库(如 Node.js 的 net 模块)并相应地处理数据。

此外,还需要确保服务器和客户端都正确地处理了编码和解码过程,以确保数据在发送和接收时保持一致。

posted @ 2024-06-13 21:15  Neon1204  阅读(4)  评论(0编辑  收藏  举报