Как я могу отправить двоичные данные через WebSocket из Node.js на веб-страницу? - PullRequest
0 голосов
/ 02 мая 2018

Я пытался отправить Float32Array и ArrayBuffer несколькими разными способами, но буферы, которые я получаю на стороне клиента, всегда кажутся пустыми. Как я должен отправить данные? Как я могу получить к нему доступ?

Вот моя последняя попытка:

server.js

const WebSocket = require('ws');

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

wss.on('connection', function connection(ws) {

    var arr1 = new Float32Array(4);
    for (var i = 0; i < arr1.length; ++i)
        arr1[i] = (i + 100) / 7;

//    ws.send(arr1.buffer);


    var arr2 = new ArrayBuffer(8);
    for(var i = 0; i < 8; i++)
        arr2[i] = i * 17;

    ws.send(arr2);    
});

client.html

<!DOCTYPE html>
<html>
<head></head>
<body>

<script>

var gData = null;

var ws = new WebSocket("ws://192.168.0.7:8000");
ws.binaryType = 'arraybuffer';

ws.onmessage = function(message) {
    console.log(message.data);
    gData = message.data;
};

</script>

</body>
</html>

Консольный вывод

ArrayBuffer(8) {}

Кроме того, просто любопытно, как я могу отправить двоичные данные обратно на сервер?

1 Ответ

0 голосов
/ 02 мая 2018

ArrayBuffer это просто буфер, чтобы получить доступ к памяти, содержащейся в буфере, вам нужно использовать view :

var arr2 = new ArrayBuffer(8);
var view = new Uint8Array(arr2);
for(var i = 0; i < 8; i++)
    view[i] = i * 17;
ws.send(arr2);  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...