如何在Javascript中通过WebSocket发送和接收数据包?



我想从Javascript发送数据到WebSocket服务器,也从WebSocket服务器发送数据到Javascript

我想发送这个:

Headers
-------
Field 1: 2 byte hex
Field 2: 2 byte hex
Field 3: 4 byte hex
Data
----
Field1 : 2 byte hex
Field1 : 8 byte hex
从Javascript中,我可以通过 发送一个两字节的值
socket = new WebSocket(host);
...
socket.send(0xEF);

但是我想发送多个字段,一起…比如0xEF, 0x60, 0x0042

我该怎么做?

而且,我如何通过包含多个字段来自WebSocket服务器的Javascript数据解释?

可以将数据作为字符串发送。例如:

socket.send("hello world");

建议您使用JSON作为数据格式。您可以将JSON字符串直接转换为对象,反之亦然。它是如此的简单和有用!

可以将数据作为JSON对象发送。

 socket.send(JSON.stringify({field1:'0xEF', field2:'0x60',field3: '0x0042'}));

听起来你问的是如何通过WebSocket连接发送二进制数据。

这个问题在这里得到了很大的回答:发送和接收二进制数据的web套接字在Javascript?

答案中没有包含的一些额外信息:

当前的WebSocket协议和API只允许发送字符串(或任何可以强制/类型转换为字符串的东西),并且接收的消息是字符串。该协议的下一个迭代(HyBi-07)支持二进制数据,目前正在浏览器中实现。

Javascript字符串是UTF-16,每个字符在内部是2字节。当前的WebSockets有效载荷仅限于UTF-8。在UTF-8中,低于128的字符值需要1字节来编码。128及以上的值需要2个或更多字节来编码。当你发送一个Javascript字符串时,它会从UTF-16转换为UTF-8。要发送和接收二进制数据(直到协议和API本身支持它),您需要将数据编码为与UTF-8兼容的格式。例如base64。这在上面链接的答案中有更详细的介绍。

相关内容

  • 没有找到相关文章

最新更新