2016-05-14 22 views
1

私は現在、NodeJS、Socket.io、およびReactでOne2Manyの例を再構築するためにKento Media Serverを試していますが、パブリッシャとKMSの間の合意を確立できていないようです。Kurento IceConnection解決しない

SDPオファーがKMSに送信され、回答がクライアントに送信されます。 KMSおよびクライアントからのICECの各候補も送信されます。動画のフィードバックはアプリに表示されていますが、サーバーには何も送信されず、エラーもありません。ここに私のアプリのchrome://webrtc-internalsがあります。

webrtc internal

例のアプリが完全に同じKurentoサーバと協力して、私はすべての行をチェックし、私は、バックエンドにし、フロントエンドで同じ呼び出しをやっています。このアプリの例はchrome://webrtc-internalsです参考のため

Example webrtc internal

、ここで私は(チェックエラーは、この例のために削除されていますが、私はそれを使用していたときに何もエラーを出されていない)バックエンドで使用しているコードです:

io.on('connect', (socket) => { 
    const socketInfo = {}; 
    socketInfo.webrtcEndpointCreation = new Promise((resolve, reject) => { 
    socketInfo.webrtcEndpointCreationResolve = resolve; 
    socketInfo.webrtcEndpointCreationReject = reject; 
    }); 

    socket.on('broadcast', (infos, callback) => { 
    kms.client.create('MediaPipeline', (mediaPipelineError, pipeline) => { 
     mediaPipeline = pipeline; 
     mediaPipeline.create('WebRtcEndpoint', (webRtcEndpointError, webRtcEndpoint) => { 
     socketInfo.webRtcEndpoint = webRtcEndpoint; 
     presenterWebRtc = webRtcEndpoint; 
     socketInfo.webrtcEndpointCreationResolve(); 
     webRtcEndpoint.on('OnIceCandidate', (event) => { 
      socket.emit('iceCandidate', 
      new kms.lib.register.complexTypes.IceCandidate(event.candidate)); 
     }); 

     webRtcEndpoint.processOffer(infos.sdpOffer, (error, sdpAnswer) => { 
      callback(null, sdpAnswer); 
     }); 
     webRtcEndpoint.gatherCandidates(); 
     }); 
    }); 
    }); 
    socket.on('iceCandidate', (candidate) => { 
    socketInfo.webrtcEndpointCreation.then(() => { 
     socketInfo.webRtcEndpoint.addIceCandidate(candidate); 
    }); 
    }); 
}); 
は、

そして、このクライアントコードです:私は最終的に問題を発見

const options = { 
    localVideo: document.getElementById('video'), 
    onicecandidate: (candidate) => { 
    global.socket.emit('iceCandidate', candidate); 
    } 
}; 

this.kurentoSocket = new WebRtcPeer.WebRtcPeerSendonly(options, (error) => { 
    this.kurentoSocket.generateOffer((err, sdpOffer) => { 
    global.socket.on('iceCandidate', (iceCandidate) => { 
     this.kurentoSocket.addIceCandidate(iceCandidate); 
    }); 
    global.socket.emit('broadcast', { sdpOffer }, (broadcastErr, sdpAnswer) => { 
     this.kurentoSocket.processAnswer(sdpAnswer); 
    }); 
    }); 
}); 

答えて

2

、それはバックエンドの問題でした。

追加する前にクライアントから送信されたメッセージから、new kms.lib.register.complexTypes.IceCandidate(candidate)のIceCandidateオブジェクトを作成する必要があります。約束が働く方法のために、エラーは無視されました。

関連する問題