2015-01-04 6 views
3

Я использую Tornado для работы с клиентским приложением, используя Javascript. Для обмена данными используется BSON. Поскольку Tornado для отправки данных использует JSON, я написал моя функция отправки через WebSocket:BSON decode от Blob

def write_bson(self, message): 
    message = BSON.encode(message) 
    self.ws_connection.write_message(message, binary=True) 

Поскольку «бинарное = 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?

+0

спасибо, но вы должны иметь возможность отправлять сообщения внутри двоичных данных –

ответ

2
var reader = new FileReader(); 
    reader.onload = function() { 
     uint8Array = new Uint8Array(this.result); 
     console.log(BSON.deserialize(uint8Array)); 
    } 
    reader.readAsArrayBuffer(event.data); 
Смежные вопросы