私はwebsockify
を使用して、画像をPythonサーバーからHTML5キャンバスに表示しています。websocket経由で画像を受信
私はPythonサーバーから画像を正常に送信できたと思いますが、キャンバスに画像を表示することはできません。
問題は、キャンバスに表示しようとしているバイト数と関係があり、画像全体が受信され、キャンバスに画像が表示されるまで待っていないと思います。
これまで私は持っていた:
オンメッセージ機能。私は、画像を送ったとき、私はコンソールの12 MESSAGERECEIVED
ws.on('message', function() {
//console.log("MESSAGERECEIVED!")
msg(ws.rQshiftStr());
});
私は文字列を受け取り、私はキャンバス上に表示しようとしていますMSG機能を取得します。私はこの方法を各画像に対して12回呼び出す。スティングのフォーマットは'xÙõKþ°pãüCY
次のとおりです。
function msg(str) {
//console.log(str);
console.log("RELOAD");
var ctx = cv.getContext('2d');
var img = new Image();
//console.log(str);
img.src = "data:image/png;base64," + str;
img.onload = function() {
ctx.drawImage(img,0,0);
}
}
この問題を解決する方法上の任意の提案?
クライアントがhybiのドラフトをサポートしていない場合を除き、イメージをbase64としてWebソケット上に送信しないでください。 Base64には33%のオーバーヘッドが発生します。したがって、バイナリとして送信することが望ましい。 – einaros
私は 'websockify'がbase64に転送されたすべてを変換していると思います。 – glarkou
その場合、それはひどいです。別のwebsocket実装を探します。 – einaros