2012-07-09 18 views
5

こんにちは私はファイルを転送しようとしています。私はいくつかのプログラムをバイナリに変換し、ネットワーク経由でC++で転送しています。私はjavascriptとwebsocketを使ってファイルを転送できるかどうか疑問に思っていましたか?私のC++プログラムをjavascriptに統合する方法の例があれば分かるはずです。ありがとう。ウェブサイト経由でjavascriptでファイルを転送する

+0

これも可能ですか? – DasBoot

答えて

7

のJavascriptは、2つの新しいバイナリのタイプがあります。

WebSocketは、型付き配列とブロブの送受信をサポートしています。

WebSocketを使用して2つのブラウザ間でデータを転送するには、両方に接続するためのサーバが必要です(ブラウザWebSocketのサポートはこの時点でのみクライアントです)。

ファイル転送を処理する既存のサーバーがC++にある場合は、WebSocketサーバーサポートをかなり簡単に追加することができます。

ws = new WebSocket("ws://100.101.102.103"); 

send()メソッドをサポート通常の文字列、入力された:あなたはこのような何かを行うのWebSocketサーバーへの接続を確立するためにJavaScriptでhttp://en.wikipedia.org/wiki/Comparison_of_WebSocket_implementations

:このページでのWebSocketクライアントとサーバーの実装を見つけることができます配列または小塊である。型指定された配列とブロブを送信すると、サーバがバイナリフレーム(opcode = 2)として受け取ったフレームが返されます。サーバはバイナリフレーム/メッセージを送信した場合、イベントのonMessageのデータプロパティは、依存型指定された配列またはBLOBのいずれかが含まれています

ws.onmessage = function (evt) { 
    console.log("Got ws message: " + evt.data); 
}; 

:あなたがメッセージハンドラを登録メッセージを受信する

ws.send(myTypedArray); 

binaryType属性の設定このように受け取ったバイナリデータのタイプを変更することができます:

ws.binaryType = "blob"; // or "arraybuffer" 
1

あなたがしようとしていることはできません。 WebSocketはクライアントモードでのみ動作します。別のWebSocketクライアント(別のブラウザなど)からの接続を受け入れることはできません。

WebSocketクライアントをサーバー経由で相互にフックすることは可能ですが、その時点ではもはや実際にピアツーピアではないので、それが本当に有用か興味深いかはわかりません。

を参照してください:入力されたアレイ(arraybuffers)とブロブ(基本的にはファイル):Will Websockets allow a server to run in the browser?

+1

ありがとう、あなたはそれがサーバーを通じてそれを行う方法の例を提供することができれば感謝します。 =) – DasBoot

関連する問題