2
我有一个python应用程序,它包含一个发送到HTML5/javascript GUI的Autobahn websocket服务器。我一直在使用JSON在它们之间传输数据,但现在我开始强调带宽,因为我需要在一些消息中发送1000个(单精度)3D位置的数组。如果我理论上可以为每个数字发送4个字节,那么将每个这些浮点数作为JSON文本写出来似乎是一种明显的浪费。 BSON似乎是一个更好的主意,但我似乎无法得到它的工作。通过websockets从python发送BSON到JavaScript
这里是我的代码的要点:
Failed to deserialize: Error: corrupt bson message {stack: (...), message: "corrupt bson message"}
我:
# Python side
class BroadcastServerFactory(WebSocketServerFactory):
# ...
def broadcast_message(message):
bson_msg = bson.BSON.encode(msg)
prepared_msg = self.prepareMessage(bson_msg, isBinary=True)
for c in self.clients:
self.clients[c].sendPreparedMessage(prepared_msg)
// Javascript side
app.sock = new WebSocket('ws://127.0.0.1:9090');
app.sock.binaryType = "arraybuffer";
// ...
sock.onmessage = function(e) {
var msg = null;
try {
msg = BSON.deserialize(e.data);
}
catch(err) {
console.log('Failed to deserialize: ', err);
}
if(msg) app.onmessage(msg);
};
不幸的是,只要我得到的JavaScript方面的消息,我的异常处理程序与触发我正在使用javascript端的mongodb bson library的浏览器版本,以及Python端的pymongo bson implementation。