TURN サーバー

ピア間でトラフィックを中継するには、ほとんどの WebRTC アプリケーションでサーバーが必要です。これは、多くの場合、クライアント間でダイレクト ソケットを使用できないためです(同じローカル ネットワーク上に存在する場合を除きます)。これを解決する一般的な方法は、TURN サーバーを使用することです。この用語は、NAT 関連リレーを使用したトラバーサルの略で、ネットワーク トラフィックを中継するためのプロトコルです。

現在、オンラインで利用可能な TURN サーバーには、自己ホスト型アプリケーション(オープンソースの COTURN プロジェクトなど)とクラウド提供サービスの両方のオプションがあります。

TURN サーバーをオンラインで利用できるようにしたら、クライアント アプリケーションで 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);