web-dev-qa-db-ja.com

最小限のオーバーヘッドで単純なサーバーレスp2pブラウザーからブラウザーメッセージングを実装するにはどうすればよいですか?

中央サーバーを必要とせずにインターネット経由でプレイできる簡単なゲームのいくつかの基本的な実装を作成しようとしています(三目並べが開始プロジェクトです)。ページをホストする必要はなく、マシン上でローカルに実行することも、Webサーバー上でホストすることもできます。ゲームをホストするとき、ページはホストにIPアドレスを通知し、IPアドレスは任意の方法(電話、インスタントメッセージなど)で友人に送信できます。その友人は、IPを入力するか、コピーして参加ダイアログに貼り付け、問題のゲームをプレイできるようにします。これらの2つのパーティが、追加のソフトウェアをインストールせずに、またいかなる種類の中央サーバーにも接続せずにこれを実行できるようにしたいと思います。

Node.js、webrtc、websockets、flash、Javaなどを含む多くの潜在的なソリューションを調べました。これらのそれぞれに、中央サーバーが必要な場合や、クライアントが何かをダウンロードする必要がある場合など、それに関連する問題があります。それはまだコンピュータにインストールされていないか、オーディオとビデオを転送するだけで、データメッセージの送信には役立ちません。 Javaをダウンロードする必要があることや、フラッシュを使用してアプリケーションを開発する必要があることを誰かに伝えるのは簡単に思えるかもしれませんが、それはすべて私の最終的な目標に反しています。

私がやろうとしていることを完全にJavaScriptで実行することが不可能な場合は、それは不可能です。しかし、ブラウザがIPに解決されるURLまたは直接IPに解決されるURLとの間でテキストデータを送受信できることを考えると、なぜそれができなかったのかわかりません。他の解決策も歓迎しますが、これが不可能な場合は、実際にそうすべきです。

私がやろうとしていることの正確な要件の簡単な説明は次のとおりです。

  1. (ビールのように)完全に無料のテクノロジーを使用する必要があります。 (フラッシュはありません。フラッシュプレーヤー用のWebアプリは無料でコーディングできますが、階層内のピアツーピアではベータキーにサインアップする必要があります。これは、無料で入手できると仮定すると、必ずしも永久に無料であるとは限りません。)

  2. 外部サーバーや偽のピアツーピアはありません。 (ここでも、中央サーバーを使用している限り、ピアツーピアの模倣を実現できるフラッシュまたはユニティベースのソリューションのように)

  3. クライアントのダウンロードはありません(確かに、ほとんどの人はJavaまたはフラッシュがインストールされていますが、多くはインストールされていません。Javaはかなり大量のダウンロードであり、コンピューターに適していません読み書きのできないユーザー。今はツールバーをインストールしようとさえしています。それに加えて、私のユーザーの多くは、Javaまたはunityを含め、何もダウンロードしたくないでしょう。これには、関連する独自の問題があります。すでに述べたように、このプロジェクトに)

要約すると、ajaxが指定されたIPにリクエストを送信し、応答をリッスンできる場合、純粋なjsで単純なピアツーピアメッセージングを取得できないのはなぜですか?または私はできますか?

データを送受信するために、本格的なWebサーバーや別のアプリケーションやプラグインをホストする必要はありません。

私は何かが足りないのですか?

19
Alex Brough

Pubnubが勧められた後、私はそこを見て、部分的に感銘を受けました。しかし、私は最終的に私が信じられないほど探していたものに正確に出くわしました。 RTCDataChannelがその答えです。 このサイト ついに私が欲しいものが可能であることを示しました。この機能に対するブラウザーのサポートは小さいですが、成長しており、試練全体が、ブラウザーコミュニティでのピアツーピアアプリケーションのサポートの拡大に​​対する私の信頼を強化しています。

14
Alex Brough

要約すると、ajaxが指定されたIPにリクエストを送信し、応答をリッスンできる場合、純粋なjsで単純なピアツーピアメッセージングを取得できないのはなぜですか?または私はできますか?

これは、ajaxリクエストをHTTPサーバーで処理する必要があるため、すべてのクライアントにサーバーをインストールする必要があるためです。

あなたが欲しいと言う

  1. 自由
  2. 外部サーバーはありません
  3. クライアントのダウンロードはありません

これらの要件の1つを削除する以外は、これらすべての要件をアーカイブすることは不可能だと思います。

私の提案は pubnub です。このソリューションにはまだサーバーが必要であり、無料ではありません(無料の使用階層があります)。しかし、良いことは、サーバーの操作を行わずに模倣されたp2p接続があり、クライアントのダウンロードが必要ないことです。

0
lngs