singo icon indicating copy to clipboard operation
singo copied to clipboard

Simple WebRTC Signaling Server written in Go

singo

icon

The Gopher character is based on the Go mascot designed byRenée French.

issue#1

singoとは

singoはフルメッシュP2Pによる複数人通信が可能なWebRTCシグナリングサーバです。
JavaScript (TypeScript)によるSDKを提供しています。また、サンプルとして簡単なビデオ通話システムも用意しています。

image

使い方

シグナリングサーバのみを立ち上げる

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

JavaScript SDK

処理の流れ

シーケンス図

sequence

クライアントと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