大多数 WebRTC 应用都需要服务器来中继对等方之间的流量,因为客户端之间通常无法建立直接套接字(除非它们位于同一本地网络中)。常见的解决方法是使用 TURN 服务器。该术语代表“Traversal Using Relays around NAT”,是一种用于中继网络流量的协议。
目前,网上有多个 TURN 服务器选项,既有自托管应用(例如开源 COTURN 项目),也有云端提供的服务。
在线上有可用的 TURN 服务器后,您只需为客户端应用提供正确的 RTCConfiguration
即可使用该服务器。以下代码段展示了 RTCPeerConnection
的示例配置,其中 TURN 服务器的网域名为 my-turn-server.mycompany.com
,并在端口 19403
上运行。配置对象还支持 username
和 credential
属性,以确保对服务器的访问安全。连接到 TURN 服务器时,需要使用这些信息。
const iceConfiguration = {
iceServers: [
{
urls: 'turn:my-turn-server.mycompany.com:19403',
username: 'optional-username',
credential: 'auth-token'
}
]
}
const peerConnection = new RTCPeerConnection(iceConfiguration);