0

私は PHP でチャット システムを開発しているので、この質問は私にとって非常に重要です。ユーザーがある種のピア ツー ピア システムを使用してユーザー間でファイルを共有できるようにしたいと考えています。

ピアツーピアには独立したプロトコルがあり、HTTP はそれらの 1 つではありませんが、何とか可能だと思います。

ユーザー A とユーザー B の両方が接続されており、A が 1 GB のファイルを B に送信したい場合、2 つの解決策があります。

  • 怠け者: A が自分のファイルをサーバーに完全にアップロードしてから、B がそれをダウンロードします。これにより、サーバーはチャット サーバーというよりも "ストレージ" サーバーのようになります。

  • 私が良いと判断したもの:送信前に実際にサーバーに保存されることなく、ユーザーAがBにファイルを送信します。

これは何とかPHPで可能ですか?

前もって感謝します。

4

1 に答える 1

6

あなたの問題について考えてみましょう。

ソリューション 1 は次のようになります。

User A <----->  Server -------> User B
                (PHP)

つまり、サーバーがユーザー A にアップロード フォームを提供し、ユーザー A がファイルをサーバーに送信します。ユーザー B はサーバーからファイルを取得します。

ソリューション 2 は次のようになります。

Server ----->  User A
Server ----->  User B
User A ----->  User B

今回は、サーバーがユーザー A と B に何らかのコードを提供し、ユーザー A がユーザー B と通信できるようにします。

サーバーがファイルを B に送信することはできないことは明らかです。サーバーは PHP が実行される唯一の場所であるため、PHP を使用してファイルを送信することはできません。

ユーザー A と B が確実に共有できる言語は Javascript です。幸いなことに、WebRTC (RTC は Real-Time Communication の略) と呼ばれる、この問題を解決するための非常に新しい仕様があります。

あなたが抱えている問題を解決するように設計されており、使用する必要があります。現在のところ、Chrome と Firefox Nightlies のみです。最近では、Chrome から Chrome、Firefox から Firefox だけでなく、Chrome が Firefox と通信できるほど安定しています。

これがかなり新しいことは明らかです。

プロジェクトと作業の範囲によっては、これが適切な選択である場合とそうでない場合があります。

http://www.webrtc.org/が役立つかもしれません。

https://webrtc-experiment.appspot.com/file-hangout/は、あなたがやろうとしていることのデモです。

https://webrtc-experiment.appspot.com/docs/how-file-broadcast-works.htmlは、その方法に関する情報です。

于 2013-03-08T18:23:59.980 に答える