Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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

Awesome Lists containing this project

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