【问题标题】:How to receive binary data from Websocket in Node.js?如何在 Node.js 中从 Websocket 接收二进制数据?
【发布时间】:2018-05-08 16:08:32
【问题描述】:

我需要将二进制数据转换为字符串。

我有这个代码:

var ws = new WebSocket(url);
ws.binaryType = 'arraybuffer';
ws.on('message', function(body) {
  console.log(body);
  console.log(body.toString());
});

然后我进入了控制台:

ArrayBuffer { byteLength: 266 }
[object ArrayBuffer]  

从下一个代码开始:

var ws = new WebSocket(url);
ws.on('message', function(body) {
  console.log(body);
  console.log(body.toString());
});

我明白了:

<Buffer 1f 8b 08 00 00 00 00 00 00 00 5d 92 c1 4b 1b 41 14 c6 bf 37 9b 51 82 84 a2 29 88 86 45 f1 50 2f 12 77 d5 54 14 d4 80 07 8f ... >

还有这样的:

4ƿ7�Q���)��E�P/w�TԀ�JB[�B�S4�VA��Pza/"=ToC��[Ͻ�'Z�Z�^���7wXv�7�|�͛I@�^~��J�G��c�ʴ�Co�<��_70K1���~����iY31;��zc��<B���Q��~�+�F��_M(= N^I��}BU?U�̲��)���L���=,p��1\��8�[���[c�S]K����ܖIy.���Ơg\q��T���R�
���������8��#O;����f���n9z��CF:��Y��Xfl��--��U�QM�z�d֧�Ó�H�                                                      �}1yć�f�C����/2��"�TH���ԅʛ�w)E�R4

在浏览器中我得到了这个:

https://i.imgur.com/0aMnsQy.png

【问题讨论】:

  • 您要发送什么,以及如何发送?
  • 我无权访问服务器代码
  • 那么,服务器应该发送什么?这显然不是一个字符串。是压缩的吗?加密?它是结构化数据的二进制表示吗?
  • 我没有任何假设。有没有办法确定它是否被压缩或什么?
  • 呃,你到底想在这里实现什么?

标签: node.js websocket


【解决方案1】:

您的问题只是:我需要将二进制数据转换为字符串,对吗?

看看这里:Converting between strings and ArrayBuffers

【讨论】:

  • 是的,但我不知道为什么它会转换为:¦ÕÑÈvÙ}æq@ÆÃ¸ÊX)%Æ­eõ*ñìr5ÄQ×8¤&amp;L0¬yfLîÂô 我尝试了ab2str(buf) 并再次得到了这个。
  • 可能类似于 var buffer = new Uint8Array(message); console.log(buffer.toString());
猜你喜欢
  • 1970-01-01
  • 2021-07-10
  • 2023-03-20
  • 2016-08-10
  • 1970-01-01
  • 2019-12-20
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多