ほとんどのWebRTCアプリケーションが機能するためには、ピア間のトラフィックを中継するためにサーバーが必要です。これは、クライアント間で直接ソケットができない場合が多いためです(同じローカルネットワーク上にない場合)。これを解決する一般的な方法は、TURNサーバーを使用することです。この用語は、リレーNATを使用したトラバーサルを意味し、ネットワークトラフィックをリレーするためのプロトコルです。
現在、オンラインで利用できるTURNサーバーにはいくつかのオプションがあり、自己ホスト型アプリケーション(オープンソースのCOTURNプロジェクトなど)としても、クラウドが提供するサービスとしても利用できます。
TURNサーバーをオンラインで利用できるようにしたら、クライアントアプリケーションがそれを使用するための正しいRTCConfiguration
が必要です。次のコードスニペットは、TURNサーバーのホスト名がmy-turn-server.mycompany.com
あり、ポート19403
実行されているRTCPeerConnection
設定例を示しています。構成オブジェクトは、サーバーへのアクセスを保護するためのusername
とcredentials
プロパティもサポートします。これらは、TURNサーバーに接続するときに必要です。
const iceConfiguration = {
iceServers: [
{
urls: 'turn:my-turn-server.mycompany.com:19403',
username: 'optional-username',
credentials: 'auth-token'
}
]
}
const peerConnection = new RTCPeerConnection(iceConfiguration);