0

私は最近、ブラウザ間の通信に注目し始めており、特に webRTC に興味を持っています。現在、ここで提供されている初心者向けのライブラリを使用して、データ チャネルを介したファイル転送を構築しようとしています。

私のアプリケーションはここに表示されます: https://shirase-ttt.jit.su/Dropzone.html

ファイルのドロップ時に基本的なファイル転送を行います。問題は、自分のブラウザの 2 つのタブ間で動作することです (Chrome でのみテスト済みですが、場所が異なります)。しかし、2 つの異なるインターネット接続/場所の間で試してみると、すぐに機能しなくなります。チャネルは確立されていますが、ファイルは送信されていません。どこから調べればよいのかわかりません。コードはローカルで動作するので問題ないようです(自分でテストしてください。以下の手順を参照してください)が、間違いを犯していないと断言できません。

テストの手順:

  • https://shirase-ttt.jit.su/Dropzone.htmlをブラウザの 2 タブ / 2 ブラウザで開きます。

  • Tab1 はチャネル名を作成し、[接続] をクリックします。

  • Tab2 は同じチャネル名を入力し、[参加] をクリックします。

  • 数秒後、コンソールにすべてのチャネル情報が表示されます。この時点から、任意のクライアントのボックスに小さなファイルをドロップし、2 番目のクライアントのコンソールからダウンロードするのを確認できます。私は 100kb までの画像を使用しており、ダウンロードに約 15 秒かかります。とても印象的です。

次に、友人とリモートでテストしました。チャネルを確立した後。ファイルが送信されているのがわかりますが、何も受信されません。

コード :

クライアント : https://github.com/xShirase/RTC-Exploring/blob/master/Dropzone.html

サーバー: https://github.com/xShirase/RTC-Exploring/blob/master/ttt.js

サーバーでは、1 行目から 34 行目のみが関連しており、残りは別の作品用です。はい、全裸にしてみました。いいえ、何も変わりません。

どんなアイデアでも大歓迎です。ありがとう。ホスティングに問題があるのではないかと考えています。正直なところ、わかりません。それが私がここに書く理由です。

また、もう一つお願いがあります。Web は現在、さまざまな形で革命を起こしています。曲線の最初にいることに気付くチャンスがあります。ここではまだすべてを行う必要がありますが、楽しむには十分です。ですから、プロではなく、できる限り多くのことを学び、正しい方向に進むためにできる限りのことをすることに熱心な人々のチームを編成したいと思います. 私が個人的に考えているポイントは、ソケットについてよく理解していること、スクリプト作成スキルが優れていること、私が推測するに専門家ではないこと、そしてたくさんのアイデアがあることです。webRTC を探索し、進化するにつれて正しく理解し、この進化に参加したいと考えています。私だけではないと思いますので、興味があり、同じような動機を持つ人は、グループで作業することでより速く学びましょう. 私に連絡して。

免責事項 : この投稿の 2 番目の部分は適切な Web サイトにない可能性があります。しかし、それはそれが見られる場所であり、それが私が探しているものです. 専門的なことも義務も一切ありません。ただコードを書いたり、アイデアをテストしたり、そのようなことをするだけです。誰かがその部分に問題がある場合は、編集、フラグ、反対票を投じるか、最初に話してください;-)

ありがとう。

4

1 に答える 1

1

NATトラバースの問題です。DataChannel.js のみ」の STUN を使用していました。現在は、TURN サーバーも 2 つ使用しているため、修正されています。それでも失敗する場合; 「独自の」TURNサーバーを使用してみてください。

STUN = {
    url: !moz ? 'stun:stun.l.google.com:19302' : 'stun:23.21.150.121'
};

TURN1 = {
    url: 'turn:73922577-1368147610@108.59.80.54',
    credential: 'b3f7d809d443a34b715945977907f80a'
};

TURN2 = {
    url: 'turn:webrtc%40live.com@numb.viagenie.ca',
    credential: 'muazkh'
};

iceServers = {
    iceServers: options.iceServers || [STUN]
};

if (!moz && !options.iceServers) {
    iceServers.iceServers[1] = TURN1;
    iceServers.iceServers[2] = TURN2;
}
于 2013-05-23T23:40:24.577 に答える