# シグナリング

## 概要

Sora では、 WebRTC 接続に必要な情報を交換する **シグナリング** に WebSocket と DataChannel を利用します。

- 利用するコーデックなどを決めるための情報を交換するため
- 新しくクライアントが参加した際に、既存のクライアントに新しいクライアントの情報を伝えるため
- クライアントが退出した際に、既存のクライアントに退出したクライアントの情報を伝えるため

## Sora のシグナリング方式について

Sora ではシグナリングの方法として WebSocket と DataChannel を提供しています。

ここでは WebSocket と DataChannel を使用したシグナリングについて説明します。

### WebSocket を使用したシグナリング

Sora は最初に WebSocket でシグナリングを行います。
そのため、 WebSocket 経由のシグナリングは必須です。

メッセージの形式は JSON を採用しています。

詳細は [WebSocket 経由のシグナリング](WEBSOCKET_SIGNALING.html) をご確認ください。

### DataChannel を使用したシグナリング

Sora では WebSocket での接続確立までシグナリングが完了した後、その後のシグナリングを DataChannel に切り替えることができます。

詳細は [DataChannel 経由のシグナリング](DATA_CHANNEL_SIGNALING.html) をご確認ください。

## WHIP / WHEP のシグナリング方式について

Sora は RFC で定義されている WHIP / WHEP のシグナリング方式もサポートしています。

WHIP / WHEP のシグナリング方式は、HTTP を利用してシグナリングを行う方式です。

### WHIP

**RFC**: 

詳細は [WHIP](WHIP.html) をご確認ください。

### WHEP

**RFC ドラフト**: 

詳細は [WHEP](WHEP.html) をご確認ください。

## シグナリングの型定義

Sora では TypeScript を利用した型定義情報を提供しています。

詳細は [シグナリングの型定義](SIGNALING_TYPE.html) をご確認ください。

## シグナリング通知

Sora ではシグナリングに利用する WebSocket や DataChannel を利用して、
Sora 側からクライアントに対して通知をする仕組みがあり、これがシグナリング通知です。

詳細は [シグナリング通知](SIGNALING_NOTIFY.html) をご確認ください。
