BSON 从 Blob 解码
BSON decode from Blob
我使用 Tornado 来处理使用 Javascript 的客户端应用程序。数据交换使用 BSON。
因为 Tornado 发送数据使用 JSON,所以我编写了通过 Websocket 发送的函数:
def write_bson(self, message):
message = BSON.encode(message)
self.ws_connection.write_message(message, binary=True)
因为 "binary=True" 在浏览器中我得到一个 Blob 并且不明白如何执行 BSON 解码接收到的消息。
我尝试了以下方式来执行解码,在注释中我指定了输出 console.log:
t = new WebSocket(url);
t.onmessage = function(event) {
console.log(event.data); // Blob { size: 390, type: "" }
console.log(BSON.deserialize(event.data)); // Error: corrupt bson message
var reader = new FileReader();
reader.onload = function(e) {
console.log(e.target.result); // ArrayBuffer { byteLength: 390 }
};
var data = reader.readAsArrayBuffer(event.data);
console.log(BSON.deserialize(data)); // Error: corrupt bson message
如何解码 BSON?
var reader = new FileReader();
reader.onload = function() {
uint8Array = new Uint8Array(this.result);
console.log(BSON.deserialize(uint8Array));
}
reader.readAsArrayBuffer(event.data);
我使用 Tornado 来处理使用 Javascript 的客户端应用程序。数据交换使用 BSON。 因为 Tornado 发送数据使用 JSON,所以我编写了通过 Websocket 发送的函数:
def write_bson(self, message):
message = BSON.encode(message)
self.ws_connection.write_message(message, binary=True)
因为 "binary=True" 在浏览器中我得到一个 Blob 并且不明白如何执行 BSON 解码接收到的消息。
我尝试了以下方式来执行解码,在注释中我指定了输出 console.log:
t = new WebSocket(url);
t.onmessage = function(event) {
console.log(event.data); // Blob { size: 390, type: "" }
console.log(BSON.deserialize(event.data)); // Error: corrupt bson message
var reader = new FileReader();
reader.onload = function(e) {
console.log(e.target.result); // ArrayBuffer { byteLength: 390 }
};
var data = reader.readAsArrayBuffer(event.data);
console.log(BSON.deserialize(data)); // Error: corrupt bson message
如何解码 BSON?
var reader = new FileReader();
reader.onload = function() {
uint8Array = new Uint8Array(this.result);
console.log(BSON.deserialize(uint8Array));
}
reader.readAsArrayBuffer(event.data);