WebSocket消息中的JavaScript双反斜杠

JavaScript double backslash in WebSocket messages

本文关键字:JavaScript 消息 WebSocket      更新时间:2023-09-26

我正在通过WebSocket向Python应用程序发送二进制数据。这个二进制数据通过调用struct.unpack("BH", data")来解码,需要一个4字节长的对象。
我目前面临的问题是,所有数据都包含重复的反斜杠,即使在arraybuffer模式下,因此长度为16字节。我无法检测到变化的大小,因为有数据附加到它的后面(与这个问题无关),即使我可以,我也找不到在Python中去除反斜杠的方法。

数据发送方式:

// this.webSocket.binaryType = "arraybuffer";   
var message = "''x05''x00''x00''x00"; // escaping required
var buffer = new Int8Array(message.length);
for (var i = 0; i < message.length; i++) {
    buffer[i] = message.charCodeAt(i);
}
this.webSocket.send(buffer.buffer);

相比之下,以下是Python中定义的数据:

b''x05'x00'x00'x00'

这是它作为接收到的消息的样子:

b'''x05''x00''x00''x00'

这个问题的理想解决方案是在javascript端,因为我不能真正改变Python应用程序的实现而不破坏基于Python的客户端。

您应该将消息定义为字节而不是字符串:

var buffer = new Int8Array([5,0,0,0])
this.webSocket.send(buffer.buffer)