私は現在、NodeJS、Socket.io、およびReactでOne2Manyの例を再構築するためにKento Media Serverを試していますが、パブリッシャとKMSの間の合意を確立できていないようです。Kurento IceConnection解決しない
SDPオファーがKMSに送信され、回答がクライアントに送信されます。 KMSおよびクライアントからのICECの各候補も送信されます。動画のフィードバックはアプリに表示されていますが、サーバーには何も送信されず、エラーもありません。ここに私のアプリのchrome://webrtc-internals
があります。
例のアプリが完全に同じKurentoサーバと協力して、私はすべての行をチェックし、私は、バックエンドにし、フロントエンドで同じ呼び出しをやっています。このアプリの例はchrome://webrtc-internals
です参考のため
、ここで私は(チェックエラーは、この例のために削除されていますが、私はそれを使用していたときに何もエラーを出されていない)バックエンドで使用しているコードです:
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);
});
});
});