singo
singo copied to clipboard
Simple WebRTC Signaling Server written in Go
singo
The Gopher character is based on the Go mascot designed byRenée French.
(issue#1)
singoとは
singoはフルメッシュP2Pによる複数人通信が可能なWebRTCシグナリングサーバです。
JavaScript (TypeScript)によるSDKを提供しています。また、サンプルとして簡単なビデオ通話システムも用意しています。
使い方
シグナリングサーバのみを立ち上げる
Dockerを使う場合
$ make docker-run
ローカルでビルドして使う場合
$ go version
> go version go1.14 darwin/amd64
$ make run
デフォルトでは ws://localhost:5000/connect
でコネクションを張れます。
シグナリングサーバとサンプルのビデオ通話システムを立ち上げる
Dockerを使う場合
$ make docker-run-demo
ローカルでビルドして使う場合
$ go version
> go version go1.14 darwin/amd64
$ make run-demo
http://localhost:5000
にアクセスするとビデオ会議システムが使えます。
SDK
処理の流れ
シーケンス図
クライアントとsingoはWebSocketでコネクションを張り、各メッセージをやり取りします。主要なメッセージとして以下があります。
クライアント側から
- join
- roomに入るときに送ります。roomIDをつけます
- offer
- 特定のclientに対してSDP Offerを送信します
- answer
- 特定のclientに対してSDP Answerを送信します
singo側から
- notify-client-id
- joinしたclientに対してclient idを通知します
- offer
- 特定のclientに対してSDP Offerを送信します
- answer
- 特定のclientに対してSDP Answerを送信します
- new-client
- roomに新たにjoinしてきたclient情報を通知します
- leave-client
- roomから退出したclient情報を通知します
LICENCE
MIT