2人のピア間で簡単なビデオチャットを作成しようとしています。これは構造体です。ChromeからChromeへのビデオチャット(webRTC)は機能しません
- Webサーバー:Apache。それはLANにあります。 PC(ウィンドウズ7)はパブリックIPを持っています。
- シグナルサーバ:同じPC上のVM(VirtualBox Centos 6)内。
- クライアントA:ノートパソコン、Vista。私は にサムスンモバイルとUSBテザリングを使用して(外部)インターネットを取得します。
- クライアントB:ラップトップ、Windows 10. I サムスンのタブレットとUSBテザリングを使用して(外部)インターネットを利用します。私は私は2つを使用する場合、私はいくつかの変更
- と信号サーバとクライアントのhttps://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Signaling_and_video_callingからのコードを使用するMozillaの "45.0.1" とChrome "49.0.2623.112 M"
を使用
Firefoxクライアント(https/wss、自己署名証明書)はすべて正常です。
- と信号サーバとクライアントのhttps://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Signaling_and_video_callingからのコードを使用するMozillaの "45.0.1" とChrome "49.0.2623.112 M"
- 「ローカル」(ローカルホストまたはローカルIP、https/wss)と「外部」インターネット(USBテザリング)の別のChromeクライアント(https/wss)でChromeクライアントを使用すると、
- 2つのChromeクライアントを「外部」インターネットと使用すると、ICE接続がありません。 36 [1時58分58秒PM: これらの私は、コンソール
- に取得されるメッセージです[1時58分58秒PM]コール受信者は、当社のコール
- webrtc.jsを受け入れました] *** WebRTCシグナリングの状態がstableに変更されました
- webrtc.js:36 [1:58:58 PM] *** ICE接続状態がチェックに変更されました
- webrtc.js:36 [1:58:58] PM] ***ストリームが追加されました
- webrtc.js:36 [1:58:58 PM] *******************
- webrtc.js:36 [1時58分58秒PM]メッセージを受信:
- webrtc.js:91オブジェクト
- webrtc.js:36 [1:58:58 PM]受信したICE候補を追加する:{"候補": "候補:0 1 UDP 2122187007 ---。--- ---- 63215 typ host" 、 "sdpMid": "音声"、 "sdpMLineIndexを" 0}
- webrtc.js:36 [1時58分58秒PM]メッセージを受信:
- webrtc.js:91オブジェクト
- webrtc.js。 36 [1:58:58 PM]受け取ったICE候補を追加する:{"候補": "候補:4 1 UDP 2122252543 ----: - :----:----:--- --- - :----:---- 63216 typ host "、" sdpMid ":" audio "、" sdpMLi neIndex ":0}
- webrtc.js:36 [1時58分58秒PM]メッセージ受信:
- webrtc.js:91オブジェクト
- webrtc.js:36 [1時58分58秒PM]追加受信したICE候補:{"候補": "候補:1 1 UDP 1685987327 - 。 - .--- 53499 typ srflx raddr -----. --- .--- rport 63215 "、" sdpMid ":" audio "、" sdpMLineIndex ":0} 3webrtc。JS:484
- *******候補が正常にICEエージェントへ
- webrtc.js渡される:36 [午前1時59分14秒PM]を*** ICE接続状態に失敗しました
- に変更しましたwebrtc.js:36 [1時59分14秒PM]
- webrtc.jsコールを閉じる:36 [1時59分14秒PM] - >が
は、私が使用してピア接続を閉じます公開STUN/TURNサーバ:
var STUN = {
urls: 'stun:stun.l.google.com:19302',
};
var TURN = {
urls: 'turn:64.233.184.127:19305',
credential: ***
username: ***
};
Firefox(Firefox)と「ローカルChrome」から「外部」Chromeで動作するため、コード(クライアントまたはシグナルサーバー)に問題はないと思います。
EDIT:
今日、私は私がeasyRTCから見つかったコードを使用。
- クライアント:...デモ/ demo_audio_video_simple.html
- サーバー:
- Firefoxの-のFirefox:... server_example/server.js
私は同じ結果が得られました - > OK、
- ローカルChrome - 外部Chrome - > OK
- 外部Chrome - 外部Chro - 私>
失敗した私は、HTTPSポート(6503)のためのサーバーへのいくつかの小さな変更を加えた: (注:私は前方ポート> 6503 6502-作成しました)
// Load required modules
var http = require("https"); // http server core module
var express = require("express"); // web framework external module
var io = require("socket.io"); // web socket external module
var easyrtc = require("../"); // EasyRTC external module
var fs = require('fs')
// Setup and configure Express http server. Expect a subfolder called "static" to be the web root.
var httpApp = express();
httpApp.use(express.static(__dirname + "/static/"));
// Start Express http server on port 6503
//var webServer = http.createServer(httpApp).listen(6503);
var options = {
key: fs.readFileSync('key.key'),
cert: fs.readFileSync('cert.crt')
};
// Our HTTP server does nothing but service WebSocket
// connections, so every request just returns 404. Real Web
// requests are handled by the main server on the box. If you
// want to, you can return real HTML here and serve Web content.
var webServer = http.createServer(options, httpApp).listen(6503);
をサーバーのメッセージ:
デバッグ - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]ルーム[デフォルト] 'connectionRoomObj.emitRoomDataDelta' デバッグFUNC実行 - EasyRTC:[easyrtc.audioVideoSimpleを] [9dl9HdL-TPqwCMTeo_gX]ルーム[デフォルト] 'connectionRoomObj.generateRoomDataDelta' デバッグFUNCを実行する - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW]実行FUNC 'onEmitEasyrtcCmd' MSGTYPE [roomData] デバッグと - EasyRTC:[easyrtc.audioVideoSimple] [ [easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC 'onEmitEasyrtcCmd' MSGTYPE [プラン] デバッグと - EasyRTC::[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX] EasyRTC - LHX9gZKB__gYlPeUo_gW] EasyRTCコマンドはMSGTYPE [プラン] デバッグで受信しましたEasyRTCメッセージタイプ[easyrtc_streamReceived] デバッグの受信 - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW]実行FUNC 'onEmitEasyrtcMsg' MSGTYPE [easyrtc_streamReceived] デバッグと - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX] EasyRTCコマンドはで受信しましたmsgTyp E [解答] デバッグ - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW]実行FUNC 'onEmitEasyrtcCmd' MSGTYPEと[答え] デバッグ - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX] EasyRTCコマンドはMSGTYPE [候補]で受信しました デバッグ - EasyRTC:[easyrtc。audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] MSGTYPE [候補] デバッグでFUNC 'をonEmitEasyrtcCmd' 実行 - EasyRTC: - :[easyrtc.audioVideoSimple] [9dl9HdL EasyRTC [easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX] EasyRTCコマンドはMSGTYPE [setUserCfg] デバッグで受信しました-TPqwCMTeo_gX] WebRTC setUserCfgコマンドを受信しました。この機能はまだ完成していません。 デバッグ - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX] EasyRTCコマンドはMSGTYPE [候補] デバッグで受信 - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] MSGTYPE [候補] デバッグでFUNC 'をonEmitEasyrtcCmd' 実行 - EasyRTC :[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX] EasyRTCコマンドはMSGTYPE [候補] デバッグで受信 - EasyRTC:MSGTYPE [候補] デバッグで[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW]実行FUNC 'onEmitEasyrtcCmd' - EasyRTC:[easyrtc。 audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX] EasyRTCコマンドはMSGTYPE [候補] デバッグで受信 - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] MSGTYPE [候補] デバッグでFUNC 'をonEmitEasyrtcCmd' 実行 - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL -TPqwCMT eo_gX] EasyRTC MSGTYPE [候補] デバッグで受信したコマンド - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] MSGTYPEでFUNC 'をonEmitEasyrtcCmd' 実行[候補] デバッグ - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] EasyRTCコマンドはで受信しましたMSGTYPE [候補] デバッグ - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC 'onEmitEasyrtcCmd' MSGTYPEと[候補] デバッグ - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] EasyRTCコマンドはMSGTYPE [候補]で受信しました デバッグ - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] EasyRTC MSGTYPE [候補] デバッグと、受信したコマンド - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW]コマンドはMSGTYPE [候補] デバッグで受信EasyRTC - E asyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC 'onEmitEasyrtcCmd' MSGTYPE [候補] デバッグと - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC 'onEmitEasyrtcCmd' MSGTYPE [候補] デバッグと - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC 'onEmitEasyrtcCmd' MSGTYPE [候補] デバッグと - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] EasyRTCコマンドはMSGTYPEで受信[候補] デバッグ - EasyRTC:[easyrtc [easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] EasyRTCコマンドはMSGTYPEで受信[候補] デバッグ - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] EasyRTCコマンドEasyRTC - .audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] EasyRTCコマンドはMSGTYPE [候補] デバッグで受信しましたmsgTで受け取ったYPE [候補] デバッグ - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] EasyRTCコマンドはMSGTYPE [候補] デバッグで受信 - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW]コマンドはMSGTYPE [候補] デバッグで受信EasyRTC - EasyRTC :[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC 'onEmitEasyrtcCmd' MSGTYPE [候補] デバッグと - EasyRTC: - :[easyrtc EasyRTC [easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] EasyRTCコマンドはMSGTYPE [候補] デバッグで受信しました。 audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC 'onEmitEasyrtcCmd' MSGTYPEと[候補] デバッグ - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC 'onEmitEasyrtcCmd' MSGTYPE [候補] デバッグと - EasyRTC:[easyrtc。 audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC 'onEmitEasyrtcCmd' MSGTYPE [候補] デバッグと - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC 'onEmitEasyrtcCmd' MSGTYPE [候補] デバッグと - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX] msgType [candidate]でfunc 'onEmitEasyrtcCmd'を実行する デバッグ - EasyRTC:[easyrtc。audioVideoSimple] [9dl9HdLは-TPqwCMTeo_gX] FUNCを実行している 'onEmitEasyrtcCmd' MSGTYPE [候補] デバッグで - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW]コマンドはMSGTYPE [候補] デバッグで受信EasyRTC - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW ] EasyType:[候補] で受信したEasyRTCコマンドmsgType [候補] でEasyRTCコマンドが受信されましたdebug - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] EasyRTCコマンドがmsgType [candidate ] デバッグ - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC 'onEmitEasyrtcCmd' MSGTYPEと[候補] デバッグ - EasyRTC:FUNCを実行して[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX] 'onEmitEasyrtcCmd' MSGTYPEと[候補] デバッグ - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC 'onEmitEasyrtcCmd' MSGTYPEと[候補] デバッグ - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC 'onEmitEasyrtcCmd' MSGTYPEと[候補] デバッグ - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] EasyRTC MSGTYPE [候補] デバッグで受信したコマンド - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX] MSGTYPE [候補] デバッグでFUNC 'をonEmitEasyrtcCmd' 実行 - EasyRTC [easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] EasyRTC MSGTYPE [候補] デバッグと、受信したコマンド - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW]コマンドはMSGTYPE [候補] デバッグで受信EasyRTC - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeU o_gW] EasyRTC MSGTYPE [候補] デバッグで受信したコマンド - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX] MSGTYPE [候補] デバッグでFUNC 'をonEmitEasyrtcCmd' 実行 - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] EasyRTCコマンドMSGTYPEで受信[候補] デバッグ - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] EasyRTCコマンドはMSGTYPEで受信[候補] デバッグ - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] EasyRTCコマンドはMSGTYPEで受信[候補] デバッグ - EasyRTC:コマンドはMSGTYPE [候補] デバッグで受信EasyRTC [easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX] MSGTYPE [候補] デバッグでFUNC 'をonEmitEasyrtcCmd' 実行 - EaはsyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC 'onEmitEasyrtcCmd' MSGTYPE [候補] デバッグと - EasyRTC: - :[easyrtc EasyRTC [easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] EasyRTCコマンドはMSGTYPE [候補] デバッグで受信[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC 'onEmitEasyrtcCmd' MSGTYPEと[候補] デバッグ - EasyRTC::[easyrtc.audioVideoSimple] [EasyRTC - .audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] EasyRTCコマンドはMSGTYPE [候補] デバッグで受信しました9dl9HdL-TPqwCMTeo_gX]実行FUNC 'onEmitEasyrtcCmd' MSGTYPE [候補] デバッグと - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC 'onEmitEasyrtcCmd' MSGTYPE [候補] デバッグと - EasyRTC:[easyrtc.audioVideoSimple] [ 9dl9HdL-TPqwCMTeo_gX] onEmitEasyrtcCの実行'MSGTYPE [候補] デバッグと - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC 'MD onEmitEasyrtcCmd' MSGTYPEと[候補] デバッグ - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC' onEmitEasyrtcCmd」MSGTYPE [候補] デバッグと - EasyRTC: - [easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] EasyRTCコマンドはMSGTYPEで受信[候補] EasyRTC [easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] EasyRTCコマンドはMSGTYPE [候補] デバッグで受信しましたデバッグ - EasyRTC:[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] EasyRTCコマンドは、[候補] デバッグMSGTYPEで受信 - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC 'onEmitEasyrtcCmd' MSGTYPE [候補] デバッグと - EasyRTC: [easyrtc。audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC 'onEmitEasyrtcCmd' MSGTYPEと[候補] デバッグ - EasyRTC:[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC 'onEmitEasyrtcCmd' MSGTYPE [候補] デバッグと - EasyRTC:[easyrtc。 audioVideoSimple]タイプ[easyrtc_streamReceived] デバッグの受信[LHX9gZKB__gYlPeUo_gW] EasyRTCメッセージ - EasyRTCは: - :[easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW]のWebRTC setUserCfgコマンドEasyRTC [easyrtc.audioVideoSimple] [LHX9gZKB__gYlPeUo_gW] EasyRTCコマンドはMSGTYPE [setUserCfg] デバッグで受信しました受け取った。この機能はまだ完成していません。 デバッグ - EasyRTC:だから[easyrtc.audioVideoSimple] [9dl9HdL-TPqwCMTeo_gX]実行FUNC 'onEmitEasyrtcMsg' [easyrtc_streamReceived]
MSGTYPEと、私はコードが問題ではないことを証明しました。誰にも分かりますか?