TURN 服务器

大多数 WebRTC 应用都需要服务器来中继对等方之间的流量,因为客户端之间通常无法建立直接套接字(除非它们位于同一本地网络中)。常见的解决方法是使用 TURN 服务器。该术语代表“Traversal Using Relays around NAT”,是一种用于中继网络流量的协议。

目前,网上有多个 TURN 服务器选项,既有自托管应用(例如开源 COTURN 项目),也有云端提供的服务。

在线上有可用的 TURN 服务器后,您只需为客户端应用提供正确的 RTCConfiguration 即可使用该服务器。以下代码段展示了 RTCPeerConnection 的示例配置,其中 TURN 服务器的网域名为 my-turn-server.mycompany.com,并在端口 19403 上运行。配置对象还支持 usernamecredential 属性,以确保对服务器的访问安全。连接到 TURN 服务器时,需要使用这些信息。

const iceConfiguration = {
    iceServers: [
        {
            urls: 'turn:my-turn-server.mycompany.com:19403',
            username: 'optional-username',
            credential: 'auth-token'
        }
    ]
}

const peerConnection = new RTCPeerConnection(iceConfiguration);