Commit Graph
170 Commits
Author SHA1 Message Date
David Zhao c745f0a318 Region aware routing (#135)
* Region aware routing

* update config, fix spacing on commented out lines
2021-10-06 21:40:04 -07:00
Théo Monnom 939ed10ca6 Room Metadata Implementation (#126) 2021-10-02 22:08:29 -07:00
David Zhao cdb04248fb Fixed reconnection for single node
It does not yet support resuming the session.
2021-09-24 14:19:23 -07:00
David Colburn d83b7b543d update protocol 2021-09-22 13:48:37 -07:00
David Colburn 347bf0345a Recording webhooks (#125)
* dump

* update protocol

* const

* regenerate wire

* message bus nil check

* nil message bus if no redis

* start and stop rec service
2021-09-21 23:46:25 -05:00
David Zhao 3ed3afad2c Recognize Go client in parsing 2021-09-17 16:25:47 -07:00
David Colburn c4c14785be let the room manager delete from router and store (#121) 2021-09-17 13:57:06 -05:00
David Zhao ff47301820 Implements protocol 3 speaker updates (#120)
* Disallow AddTrack from participants that don't have the permission

* Support protocol 3 speaker updates, client info

* update protocol

* Disallow AddTrack from participants that don't have the permission

* increase wait time for GH to pass
2021-09-17 11:47:13 -07:00
David ColburnandDavid Zhao abde72a907 Remove room manager from room service (#119)
* start splitting

* room allocator

* remove room manager

* Update pkg/service/roomallocator.go

Co-authored-by: David Zhao <david@davidzhao.com>

Co-authored-by: David Zhao <david@davidzhao.com>
2021-09-17 01:29:29 -05:00
Mathew Kamkar 700a879c0b Redis Router graceful stop (#116)
* prestop and hasparticipants in interface

* add prestop function to existing routers

* fakerouter prestop

* update protocol version

* read lock

* redis router graceful stop

* test fix

* force stop
2021-09-15 13:07:44 -07:00
David Zhao 614ede2edc Supports client protocol 3 - subscriber as primary (#110)
* use subscriber connection as primary whenever possible

* backwards compat for data messages

* bump protocol version
2021-09-09 00:53:15 -07:00
David Colburn 2a3fb5f0e7 move logging to protocol (#109) 2021-09-09 00:45:42 -07:00
David Colburn e9ffbefa70 move recorder to msg bus (#108) 2021-09-02 17:06:48 -05:00
David Zhao e82d50d717 Send explicit message to clients for mute/unmute. (#107)
* Send explicit message to clients for mute/unmute.

* documentation in config
2021-09-01 21:50:02 -07:00
David Colburn 4044c314b8 participant key (#106)
* participant key

* update fake router

* WriteRTCMessage

* move sink closing

* unused code
2021-08-31 16:14:06 -05:00
David Colburn eb6e763e8d use request context in rtc service 2021-08-30 23:27:04 -07:00
David Colburn 1f1eea383f add ctx to interfaces (#105)
* add ctx to interfaces

* use existing context
2021-08-30 20:31:24 -05:00
David Colburn 2fd61531d2 small refactor (#104) 2021-08-30 18:22:11 -05:00
David Colburn 0bfd05c3b8 move router room manager link (#103) 2021-08-30 17:18:18 -05:00
David Colburn 69c1d4c295 Interfaces (#97)
* create interface

* move room manager to interface

* interfaces

* updates

* fix loop

* fix fakes

* remove node types
2021-08-28 18:28:08 -05:00
David Colburn 8a44fad307 protocol 0.8 (#95)
* protocol 0.8

* merge new selector
2021-08-27 13:16:33 -05:00
Mathew KamkarandDavid Zhao c437152e2b NodeSelector using system load metric (#94)
* use load when selecting nodes

* Apply suggestions from code review

Co-authored-by: David Zhao <david@davidzhao.com>

* sysload selector test

* wire nodeSelectorFromConfig

* fix tests

* Update pkg/routing/selectorsystemload_test.go

Co-authored-by: David Zhao <david@davidzhao.com>

* dz review: nits

Co-authored-by: David Zhao <david@davidzhao.com>
2021-08-26 15:24:39 -07:00
David Colburn b95701c7da update protocol 2021-08-25 13:42:02 -07:00
Mathew Kamkar f5466c74e6 list-nodes command action (#87)
* list-nodes command action

* refactor stats into a package

* store existing stats in redis, more refactoring

* dz review: atomic load
2021-08-24 10:14:39 -07:00
PJC 9016da1936 check turn domain and port range (#90)
* check negative turn port

* check turn domain

* domain check test code
2021-08-23 10:49:16 -07:00
David ZhaoandChesterMing bcf6e15e07 SendData API & publishData permission (#88)
* SendData Server API

* SendData Server-API adjustments based on suggestions

* Update proto version

* enforce publishData permission

* go mod tidy

* fix go.mod

* go mod tidy

Co-authored-by: ChesterMing <89124853+ChesterMing@users.noreply.github.com>
2021-08-19 18:11:48 -07:00
David Zhao 29edf4e8d9 Improve dynamic simulcast, properly cleanup after pendingTracks (#84) 2021-08-13 15:49:25 -07:00
David Zhao 6fe0d4bafc webhook type -> event 2021-08-09 23:37:01 -07:00
David Zhao 9495646f1a webhooks support (#81) 2021-08-09 09:57:37 -07:00
David Colburn 1f4288744c upgrade protocol 2021-08-06 16:02:49 -07:00
David Colburn 6111b2d4f8 Recording apis (#78)
* apis with auth

* recording service

* record permission

* protocol 0.6.5

* bump version
2021-08-04 22:44:06 -05:00
David Colburn a53deecb82 revert recording apis 2021-08-03 00:19:19 -07:00
David Zhao a9c4851113 Fix external IP discovery. fix LeaveRequest during server disconnect (#72) 2021-07-28 21:33:34 -07:00
David Colburn b00d5a02cb RoomRecorder (#70) 2021-07-27 00:39:48 -05:00
David Zhao f8782fae3f Send stun servers to clients (#69)
* Send stun servers to clients

* use TURN/UDP as STUN servers
2021-07-26 15:43:26 -07:00
David Zhao 834dce543b fix participant APIs when using LocalRouter (#67) 2021-07-22 11:06:23 -07:00
David Colburn 4bab395ac9 Hidden participants (#65)
Enables hidden recording and/or forwarding participants
2021-07-19 18:33:28 -05:00
hn8 87dfb2b117 log: consistent log key (#60) 2021-07-19 10:28:51 -07:00
hn8 06c44ca8f6 feat: support UDP in TURN (#61)
1. Add UDP option to TURN
2. GetLocalIPAddress default to IPv4
2021-07-19 09:21:59 -07:00
hn8 99e9997d0a feat: support SetLogger & SetLoggerFactory (#57)
* upgrade logr to stable release v1.0.0

* feat: support SetLogger & SetLoggerFactory
2021-07-18 21:28:09 -07:00
Andy Lindeman 7b05e2fb30 Propagate err2 if not nil (#56) 2021-07-17 10:14:52 -07:00
David Colburn e3fc3397ce move cors to middleware (#54)
* move cors to middleware

* check for nil url

* remove snapshot
2021-07-15 18:36:54 -05:00
David Colburn 53bc65285c connection validation 2021-07-15 14:23:17 -07:00
David Zhao 53b52a67ca use protobuf for clients with protocol > 1 (#52) 2021-07-13 22:28:34 -07:00
David Zhao 850fecf931 Allow publishers to set layer availability (#51)
* support client message to update active layers

* update to match new protocol
2021-07-13 21:35:08 -07:00
David Colburn 5fdb6361cd Dev debug info (#50) 2021-07-13 14:05:25 -05:00
David Zhao d38fc43b89 Lock room creation to ensure atomic creation & node assignment (#46)
* Lock room creation to ensure atomic creation & node assignment

* more tests
2021-07-12 14:50:14 -07:00
David Zhao a80e8cf69f Enable passing in local IP, refactored IP detection (#48)
* Enable passing in local IP, refactored IP detection

* update docker server instructions
2021-07-11 08:42:11 -07:00
David Colburn 50538db21f update log keys 2021-07-09 10:49:21 -07:00
hn8andDavid Zhao dcfe7eaf4f Enhancement: audio speakers (#44)
* refactor: active speakers

1. Observe the loudest adjusted with active ratio instead of linear average of decibel values
2. Follow RFC6465 to convert audio level from decibel to linear value.
3. Quantize audio level for stable slice comparison
4. Switch moving average algorithm from MMA to EMA to have the same center of mass with SMA
5. Minor: remove seenSids map allocation
6. Minor: minimize division arithmetic

* Update pkg/rtc/audiolevel.go

Co-authored-by: David Zhao <david@davidzhao.com>
2021-07-09 09:46:24 -07:00