https://github.com/tockn/singo
Simple WebRTC Signaling Server written in Go
https://github.com/tockn/singo
go webrtc webrtc-demos webrtc-signaling
Last synced: 14 days ago
JSON representation
Simple WebRTC Signaling Server written in Go
- Host: GitHub
- URL: https://github.com/tockn/singo
- Owner: tockn
- License: mit
- Created: 2020-04-29T07:27:45.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-10-19T06:00:56.000Z (6 months ago)
- Last Synced: 2025-03-22T22:41:17.947Z (23 days ago)
- Topics: go, webrtc, webrtc-demos, webrtc-signaling
- Language: Go
- Homepage:
- Size: 4.1 MB
- Stars: 71
- Watchers: 2
- Forks: 7
- Open Issues: 53
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-webrtc - singo - Simple WebRTC Signaling Server written in Go. (Signaling Server / C/C++)
README
# singo

The Gopher character is based on the Go mascot designed by[Renée French.](http://reneefrench.blogspot.com/)
([issue#1](https://github.com/tockn/singo/issues/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
[JavaScript SDK](https://github.com/tockn/singo/blob/master/sdk/README.md)
## 処理の流れ
### シーケンス図

クライアントとsingoはWebSocketでコネクションを張り、各メッセージをやり取りします。主要なメッセージとして以下があります。
##### クライアント側から
[定義](https://github.com/tockn/singo/blob/master/handler/message.go)
- join
- roomに入るときに送ります。roomIDをつけます
- offer
- 特定のclientに対してSDP Offerを送信します
- answer
- 特定のclientに対してSDP Answerを送信します##### singo側から
[定義](https://github.com/tockn/singo/blob/master/model/message.go)
- 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