Kurento IceConnection不解决

我目前正在尝试使用Kurento Media Server来重build与NodeJS,Socket.io和React的One2Many示例,但似乎无法在发布者和KMS之间build立联系。

SDP报价被传送给KMS,答案被传送给客户。 每个来自KMS和客户端的ICECididate也都被传送。 video反馈显示在应用程序,但没有发送到服务器,没有任何错误。 这里是我的应用程序的chrome://webrtc-internals

webrtc内部

示例应用程序完全与同一个Kurento服务器一起工作,我检查了每一行,并且在后端和前端执行相同的调用。 这里是示例应用程序的chrome://webrtc-internals

示例webrtc内部

作为参考,这里是我在后端使用的代码(错误检查已经被删除了这个例子,但没有任何提示错误,当我使用它):

 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); }); }); }); 

我终于find了问题,这是一个后端问题。

我需要创build一个IceCandidate对象与new kms.lib.register.complexTypes.IceCandidate(candidate)从客户端发送的消息添加之前。 由于承诺的工作方式,错误被忽略了。