こんにちは、ファイルを転送しようとしています。ファイルをバイナリに変換し、C++ を使用してネットワーク経由で転送するプログラムがいくつかあります。javascript と websocket を使用してファイルを転送できるかどうか疑問に思っていましたか? 私のC++プログラムをjavascriptに統合する方法の例をいただければ幸いです。ありがとう。
2 に答える
Javascript には、型付き配列 (arraybuffers) と Blob (基本的にはファイル) という 2 つの新しいバイナリ型があります。
WebSocket は、型付き配列と BLOB の送受信をサポートしています。
WebSocket を使用して 2 つのブラウザ間でデータを転送するには、両方が接続するためのサーバーが必要です (この時点では、ブラウザの WebSocket サポートはクライアントのみです)。
ファイル転送を処理する C++ の既存のサーバーがある場合は、WebSocket サーバー サポートをかなり簡単に追加できるはずです。このページで WebSocket クライアントとサーバーの実装を見つけることができます: http://en.wikipedia.org/wiki/Comparison_of_WebSocket_implementations
JavaScript で WebSocket サーバーへの接続を確立するには、次のようにします。
ws = new WebSocket("ws://100.101.102.103");
send() メソッドは、通常の文字列、型付き配列、または BLOB をサポートします。型付き配列と BLOB を送信すると、サーバーはフレームをバイナリ フレーム (opcode = 2) として受信します。
ws.send(myTypedArray);
メッセージを受信するには、メッセージ ハンドラを登録します。
ws.onmessage = function (evt) {
console.log("Got ws message: " + evt.data);
};
サーバーがバイナリ フレーム/メッセージを送信する場合、イベントの onmessage データ プロパティには、binaryType 属性の設定に応じて、型指定された配列または BLOB が含まれます。次のように、受信するバイナリ データのタイプを変更できます。
ws.binaryType = "blob"; // or "arraybuffer"
あなたがやろうとしていることは不可能です。WebSocket はクライアント モードでのみ動作します。別の WebSocket クライアント (別のブラウザーなど) からの接続を受け入れることはできません。
サーバーを介して WebSocket クライアントを相互にフックすることは可能ですが、その時点ではもはやピアツーピアではないため、それが本当に便利で興味深いものであるかどうかはわかりません。