Kurento-client.js 可以在应用服务器中使用而无需在浏览器中使用 kurento-utils.js 吗?

Can Kurento-client.js be used in an app server without using kurento-utils.js in browser?

我想将 Kurento 主要用作 WebRTC 到 RTP 网关和一些过滤器。在浏览器中,我使用的是浏览器的原生 WebRTC API。

我想在我的 Node 应用服务器中创建一个 WebRTCEndpoint(Kurento 中使用该术语)并通过 Kurento 管道将其连接到 RTPEndpoint(Kurento 中使用该术语)。我知道这在 Kurento 中是微不足道的,但我的问题是,是否可以通过在应用程序服务器中仅使用 Kurento-client.js 而在应用服务器中不使用 Kurento-utils.js 来实现browser? 我想这样做有很多原因,其中之一是我有自己的信令,还有其他问题我需要直接控制低级 WebRTC API浏览器,kurento-utils.js 不允许我这样做。

我还认为,在没有回退的情况下绑定到 ws 信号不是一个理想的设计,如果这确实是 Kurento 正在执行的。

好的! Kurento-utils-js 只是一个 RTCPeerConnection 包装器,用于管理视频标签、缓冲 ICE 候选、在 PlanB 或 UnifiedPlan 的情况下对 SDP 进行处理以及其他一些事情。该库与特殊信号没有任何联系:来自您将发出信号的方法的回调对于 RTCPeerConnectionWebRtcPeer 对象是相同的。例如,这就是您创建 WebRtcPeer 以及发送由它生成的 SDP 提议的方式

var options = {
    onicecandidate : onIceCandidate,
    localVideo : localMedia,
    remoteVideo : remoteMedia
}

var webRtcPeer = new kurentoUtils.WebRtcPeer.WebRtcPeerSendrecv(options, function(error) {
    if (error) return console.error(error)
    webRtcPeer.generateOffer(function (error, sdpOffer) {
        if (error) return console.error(error)
        sendMessageToServerApp("sdpOfferMessage", sdpOffer)
    })
})

sendMessageToServerApp 是你需要实现的东西。

您还可以访问包装对象。假设你有一个来自库的 webRtcPeer 对象,你可以用 属性 webRtcPeer.peerConnection.

得到 RTCPeerConnection

使用 websockets 的目的是支持从媒体服务器到服务器应用程序中定义的代理元素的事件。尽管您可以使用长轮询和其他技巧,但您不太可能将服务器应用程序和 KMS 部署到需要它们的环境中,因为您应该完全控制这部分。建议是让媒体服务器的信令端口仅供您的服务器应用程序使用。

为了在客户端和服务器应用程序之间建立回退机制,我建议使用 SockJS。我们过去用过它,效果很好。