web-dev-qa-db-ja.com

ブラウザー間(ピアツーピア)接続を行うにはどうすればよいですか?

HTML5[〜#〜] css [〜#〜]およびJavaScriptを使用してWebサイトを作成するにはどうすればよいですか- ページがロードされると、クライアントブラウザー間の直接tcp/ip接続

サイトではユーザーの1人からの入力をできるだけ早く他のユーザーに送信する必要があるため、クライアントAからサーバー、次にクライアントBにデータを送信するのは適切ではないため、待ち時間を短縮するためにこれを行う必要がありますオプション。

このテーマに関する以前の投稿を読みましたが、有効な解決策/例はありませんでした。私が読んだものから、Silverlight、JavaまたはFlash。

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

70

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

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

大部分のトピックで述べたように、2008 HTML5ワーキングドラフトは両方とも「ピアツーピア接続」セクションを備えていました。

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

2011年10月31日以降、W3Cエディターズドラフトは公式のワーキングドラフトです。

PeerConnection(UDPベース)の唯一の実装は、Ericsson labs(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のみをサポートし、複数の Demos でテストできます。 String/ArrayBuffer/...などのアプリケーションデータの転送は現在サポートされていません。

2012年3月16日以降、WebRTC Editorのドラフト は、 "Peer-to-peer Data API" を分離して、一般的なアプリケーションデータ(StringArrayBufferおよびBlob)。 ChromiumはData APIをすぐに実装したい (2012年4月10日)。

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

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

2018:DataChannelsはまだ実験的ですが、ChromeおよびFirefoxの現在のバージョンで利用可能です:

117
Dennis

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

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

7
Emil Ivanov

最近のほとんどのユーザーはNATまたはファイアウォールの背後にいるという事実に注意を向けたいと思います。これは、ユーザーのコンピューターへの着信接続を簡単に確立できないことを意味します。 (可能な場合)動作するのは一部のケースのみであり、ソリューションがさらに複雑になります。