Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: about 1 month 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 (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-10-19T06:00:56.000Z (2 months ago)
- Last Synced: 2024-11-09T19:44:30.650Z (about 1 month ago)
- Topics: go, webrtc, webrtc-demos, webrtc-signaling
- Language: Go
- Homepage:
- Size: 4.1 MB
- Stars: 67
- Watchers: 3
- Forks: 6
- 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
![icon](https://user-images.githubusercontent.com/29294540/81082118-cdf66a00-8f2d-11ea-97a8-eb31e6c2fe8c.jpg)
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を提供しています。また、サンプルとして簡単なビデオ通話システムも用意しています。![image](https://user-images.githubusercontent.com/29294540/81088076-752acf80-8f35-11ea-8f82-b320352e3a21.png)
## 使い方
### シグナリングサーバのみを立ち上げる
#### 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)
## 処理の流れ
### シーケンス図
![sequence](https://github.com/tockn/singo/blob/master/sequence.png?raw=true)
クライアントと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