UI に pyzmq と pyqt を使用して、ローカル ネットワーク (すべて WINDOWS) 用のメッセージング/チャット アプリケーションを構築しました。これはmajordomo パターンに基づいています。このように設定されています:
- ネットワーク上の各マシンにはクライアント/ワーカーのペアがあります
- 彼らはpyzmq経由で「サーバー」 ブローカーに接続し、セッションを登録します
- セッションは「サーバー」 ブローカーによってクライアントにブロードキャストされます
- 「送信者」クライアントが特定のセッションにメッセージを送信すると、ブローカーはメッセージを対応するワーカー宛先にルーティングし、ワーカーによって応答が生成され、ブローカーによって「送信者」クライアントにルーティングされます(ループの終了、配信の確認) )
すべてが正常に機能しており、テキスト メッセージは「クライアント」の pyqt UI で形成され、「ワーカー」の pyqt UI で受信されます。今、このスケルトンを基にアプリケーションにビデオ チャットを追加しようとしています... webRTC を調べていて、それを実装する方法を見つけたいと思っています。
これがwebRTCのしくみです私が収集したものから(ここでは深刻な問題がある可能性があります。修正してください):
- マシン Aの Chrome ブラウザーは、 javascript 関数 webkitGetUserMediaを介して Webcam/mic からローカルのビデオ/オーディオ ストリームを開き、javascript関数webkitURLを介してストリームの(マシン A) URLを作成します。
- (マシン A) の URLをシグナリング サーバー経由でマシン Bの Chrome ブラウザに送信します。
- マシン Bの Chrome ブラウザは(マシン A) URLを受け入れてロードし、前述のJavaScript 関数を介して webcam.mic から独自のローカル ビデオ/オーディオ ストリームをセットアップし、(マシン B) URLを使用してシグナリング サーバーを介してマシン Aに返信します。
- マシン Aの Chrome ブラウザーが表示されている(マシン B)ビデオ/オーディオ | マシン Bの Chrome ブラウザーが(マシン A) のビデオ/オーディオを表示している
それがプロセスですか?それとも、これはピアが互いにどのように接続するかについての完全に難しい仮定ですか?
正しい場合、マシン間の接続を作成するためのシグナリング サーバーとして機能するように現在の pyzmq アプリケーションを適応させたいと考えています。マシンの IP アドレスは既知であり、必要なポートにアクセスできるようにファイアウォールを構成できるため、試していますこの設定で余分な STUN/TURN サーバーを排除するために、LAN の外に出てリモート マシンにアクセスするつもりはありません。そして、Pythonと付属のバッテリー(Node.jsを避ける)ですべて(可能な限り)処理したいと思います。
ですから、主な質問は、webRTC をセットアップに統合するにはどうすればよいですか? webRTC を構築してシグナリング サーバーまたはピア マシン上で実行するには、特定の必須ライブラリまたは API が必要ですか? コード例/アドバイス/リンクをいただければ幸いです。