/singo

Simple WebRTC Signaling Server written in Go

Primary LanguageGoMIT LicenseMIT

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