ブラウザ間(ピアツーピア)接続を確立するにはどうすればよいですか?[閉まっている]


83

ページが読み込まれると、クライアントブラウザ間の直接tcp / ip接続を可能にする、クライアント側でHTML5CSS、およびJavaScriptを使用してWebサイトを作成するにはどうすればよいですか。

サイトでは、ユーザーの1人からの入力をできるだけ早く他のユーザーに送信する必要があるため、遅延を減らすためにこれを行う必要があります。そのため、クライアントAからサーバーにデータを送信してからクライアントBにデータを送信するのは適切ではありません。オプション。

私はこの主題に関する以前の投稿を読みましたが、私が見つけることができる利用可能な実用的な解決策/例はありませんでした。私が読んだものから、クライアント間の直接接続は、Silverlight、Java、Flashなどのプラグインを使用して行うことができます。

プラグインを必要としないソリューションはありますか?JavaScriptのみを使用したいのですが。


3
:シグナルサーバーなしのWebRTCピア接続blog.printf.net/articles/2013/05/17/...
danijar

1
PeerJSも参照してください。これは、この分野である程度の牽引力を持ち、比較的適切なブラウザサポートを備えたプロジェクトです。
ボアズ2015年

1
最も簡単な方法は、httprelay.ioおよびAJAX呼び出しを使用することです。それは高速で、50ms未満です。
Jonas

回答:


126

Stackoverflowには、ブラウザでのP2P接続に関するいくつかのトピックがあります。

  1. HTML5を使用すると、WebアプリでピアツーピアのHTTP接続を確立できますか?
  2. ブラウザでP2Pを実行するために利用できるテクニックは何ですか?
  3. HTML5は(WebSocketだけでなく)ピアツーピアをサポートしていますか?
  4. HTML5 Websocketは、サーバー(P2P)を使用せずに2つのクライアント(ブラウザー)に直接接続できますか?
  5. Webブラウザでピアツーピア接続を作成することは可能ですか?
  6. WebSocketはp2p(ブラウザーからブラウザーへ)通信を可能にしますか?
  7. HTML 5ピアツーピアビデオの可能性?
  8. WebRTCはまだどのブラウザにも実装されていますか?

ほとんどのトピックで述べたように、2008年のHTML5ワーキングドラフトには、「ピアツーピア接続」というセクションがありました。

2009年2月12日W3Cワーキングドラフト以降、「ピアツーピア接続」のセクションはなくなりました。しかし、このP2P接続は失われていません。WebRTC(Real-Time Communications)仕様内でPeerConnectionという名前で戻ってきました。

2011年10月31日以降、W3C編集者ドラフトは公式のワーキングドラフトです。

PeerConnection(UDPベース)の唯一の実装は、Ericssonラボ(2011年5月)によって変更されたWebKitに存在し、非常にうまく機能しています。いくつかのパッチが現在WebKitにあります(2011年10月-以下の更新を参照してください!):

さらに、WebRTCイニシアチブは、Google、Mozilla、Operaによるプロジェクトです。したがって、彼らはPeerConnectionの仕様を継続しています。

おそらくChrome(WebKitを使用)は、PeerConnectionでWebRTCをサポートする最初の主要なブラウザーになるでしょう。

2012年1月18日以降、ChromeはWebRTCもサポートしています。で有効にするとDevチャネル(Windows、OSX、Linux)およびCanaryビルド(WindowsおよびOSX)で使用できchrome://flagsます。MediaStreamビデオやオーディオなどのみをサポートし、いくつかのデモでテストできます。以下のようなアプリケーションデータを転送String/ ArrayBuffer/ ...今まではサポートされていません。

以来2012年3月16日、のWebRTC編集者草案は分離し、「ピア・ツー・ピアのデータAPI」汎用アプリケーションのデータを送受信するために(StringArrayBufferおよびBlob)。Chromiumは、Data APIを間もなく(2012年4月10日)実装したいと考えています

4月3日、MozillaはFirefox用のWebRTCでも最初の実用的な例を公開しました。

DataChannelは、フラグの後ろにあるバージョン25のChromeで計画されていますが、Firefox Nightly / Aurora(2012年12月12日)でテストできます。

2018:データチャネルはまだ実験段階ですが、ChromeとFirefoxの現在のバージョンで利用できます:


11
ここは2014年ですが、最近の進捗状況で優れた投稿を更新できますか?
myroslav 2014

1
@ myroslavwebrtc.org / interopから始めるのが良いでしょう。今ではFirefox、Chrome、Operaが完全にサポートしており、適切なアダプターと相互運用できます。
msemelman 2014

1
すぐにやります!
デニス

2
ここオーストラリアでは2016年です。ブラウザのピアツーピアの最新のリンクを入手できますか?
ガネーシュクリシュナン2016

1
ええ、そのアップデートはどうですか?
obskyr 2016年

6

私はあなたを失望させなければなりません-これは現在JavaScriptだけでは不可能です。Websocket(およびSocket.IO)は、クライアントとサーバー間のソケットのような接続を許可しますが、クライアント間の接続は許可しません。オプションはプラグインです-Flash、Silverlight、Java、またはカスタムメイドです。

できることは、socket.ioを使用し、単純なプロキシサーバーを作成してそれをエミュレートすることです。


WebSocketが2つのブラウザー間の直接p2pを許可しないことを確信していますか?ウィキペディアの内容から、次のように聞こえます。「WebSocketは、単一の伝送制御プロトコル(TCP)ソケットを介して、双方向の全二重通信チャネルを提供するテクノロジーです。WebブラウザーとWebに実装されるように設計されています。サーバーですが、どのクライアントまたはサーバーアプリケーションでも使用できます。」
–RăzvanFlavius Panda 2011

5
ブラウザを使用できないLISTEN/サーバーとして機能できない場合に対処される問題。全二重の任意のサーバーと通信できますが、コンシューマーがサーバーになることはできません。さらに、可能であれば、ファイアウォールで100万の問題が発生します。Emilのソリューションは、遅くはなりますが、うまく機能します。
ghayes 2011

技術的には、WebSocketはどこでも使用できます。ただし、ブラウザでは、セキュリティ上の制約により、これは発生しません。ゲイズはそれを説明した。また、通常、サーバーは帯域幅の容量が大きい場所に配置されるため、このソリューションの方がおそらく高速であることに注意してください。サーバーは100クライアントを正常に処理しますが、実際のp2pを使用すると、ユーザー接続が非常に迅速に飽和します。
Emil Ivanov

@Emil Ivanov:あなたが言っていることは本当ですが、それが1対1の接続である場合は、より高速になるはずです。
–RăzvanFlavius Panda 2011

3

最近のほとんどのユーザーはNATまたはファイアウォールの背後にいるという事実に注意を向けたいと思います。これは、ユーザーのコンピューターへの着信接続を簡単に確立できないことを意味します。したがって、あなたのアイデアは(可能であれば)場合によってのみ機能し、ソリューションをさらに複雑にします。したがって、(websocketsまたはsocket.ioを使用して)永続的な接続が可能なクライアントサーバーシステムの方が適しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.