2016-10-14 6 views
0

MQTTを使用して圧縮JSONをブラウザからPythonサーバーに送信しようとしています。 これは私が(gzipでjsのを使用して)元のオブジェクトを圧縮する方法であるMQTT.jsで圧縮JSONを送信

... 
if(opt.compression){ 
    msg = new Uint8Array(gzip.zip(msg, compressionOptions)); 
} 
MQTTclient.publish(topic, msg); 
... 

しかし、私はエラーを取得する:私は標準型指定されたようなメッセージを公開しようとした場合

script.js:65 TypeError: string.charCodeAt is not a function(…)

EventEmitter.emit @ events.js:77

sendPacket @ client.js:51

....

同じことが起こりますアレイ。 圧縮されたメッセージを送信する唯一の方法は、それをエンコードすることですが、Python側で問題が発生します。

+0

なぜブラウザとサーバにgzip compress/decomprssをさせるだけではないのか説明できますか?ブラウザのgzipは、JSで書かれたものよりはるかに優れており、すでにメモリにロードされています... – LinuxDisciple

+0

paho JSクライアントではなくMQTT.jsを使用する理由は何ですか? – hardillb

+0

@LinuxDiscipleこれは、ブラウザとブローカ間のペイロードだけでなく、ブローカとサブスクライバ間のペイロードに関する可能性が最も高いです。また、gzipエンコーディングはwebsocketプロトコルのアップグレード後に動作しますか? – hardillb

答えて

0

型付きの配列の代わりに実際の "バッファ"を公開して解決しました。 これは私の回避策は次のとおりです。

... 
if(opt.compression){ 
    msg = toBuffer(gzip.zip(msg, compressionOptions)); 
} 
MQTTclient.publish(topic, msg); 
... 

私はtypedarray-to-bufferモジュールを使用していました。

関連する問題