2016-04-11 10 views
0

2人のピア間で簡単なビデオチャットを作成しようとしています。これは構造体です。ChromeからChromeへのビデオチャット(webRTC)は機能しません

  • Webサーバー:Apache。それはLANにあります。 PC(ウィンドウズ7)はパブリックIPを持っています。
  • シグナルサーバ:同じPC上のVM(VirtualBox Centos 6)内。
  • クライアントA:ノートパソコン、Vista。私は にサムスンモバイルとUSBテザリングを使用して(外部)インターネットを取得します。
  • クライアントB:ラップトップ、Windows 10. I サムスンのタブレットとUSBテザリングを使用して(外部)インターネットを利用します。私は私は2つを使用する場合、私はいくつかの変更

    Firefoxクライアント(https/wss、自己署名証明書)はすべて正常です。

  • 「ローカル」(ローカルホストまたはローカル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と、私はコードが問題ではないことを証明しました。誰にも分かりますか?

答えて

0

問題が見つかりました。問題は、私が使用した公開TURNサーバーが毎xユーザー名/パスワードを変更することでした。私はこれに気づいていないので、私は同じユーザー名/パスワードを使用しました。ユーザー名とパスワードを変更すると、Firefox、Chrome、Opera、それらの組み合わせのすべてがうまくいきました。

関連する問題