ほとんどの WebRTC アプリケーションが機能するには、ピア間でトラフィックをリレーするサーバーが必要です。これは、クライアント間で直接ソケットを設定できないことが多く(同じローカル ネットワーク上に存在する場合を除く)、この問題を解決する一般的な方法は、TURN サーバーを使用することです。この用語は、NAT を介したリレーを使用したトラバーサルの略で、ネットワーク トラフィックをリレーするプロトコルです。
現在、TURN サーバーは、セルフホスト アプリケーション(オープンソースの COTURN プロジェクトなど)とクラウド提供サービスとして、オンラインで利用できるオプションがいくつかあります。
オンラインで利用可能な TURN サーバーを用意したら、クライアント アプリケーションで使用するための正しい RTCConfiguration
があれば、あとは何も必要ありません。次のコード スニペットは、TURN サーバーのホスト名が my-turn-server.mycompany.com
で、ポート 19403
で実行されている RTCPeerConnection
の構成例を示しています。構成オブジェクトは、サーバーへのアクセスを保護するための 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);