decouple websocket and RTC nodes, prep for distributed

This commit is contained in:
David Zhao
2021-01-16 00:25:13 -08:00
parent 9a10a57b30
commit 9064f6ade1
61 changed files with 2683 additions and 1361 deletions
+2 -2
View File
@@ -168,7 +168,7 @@ func (c *RTCClient) Run() error {
c.conn.SetCloseHandler(func(code int, text string) error {
// when closed, stop connection
logger.GetLogger().Infow("connection closed", "code", code, "text", text)
logger.Infow("connection closed", "code", code, "text", text)
c.Stop()
return nil
})
@@ -519,7 +519,7 @@ func (c *RTCClient) logLoop() {
for !c.paused && c.reader != c.writer {
val, _ := c.reader.Value.(*logEntry)
if val != nil {
logger.GetLogger().Infow(val.msg, val.args...)
logger.Infow(val.msg, val.args...)
}
// advance reader until writer
c.reader = c.reader.Next()
+7 -7
View File
@@ -54,7 +54,7 @@ func (w *TrackWriter) Start() error {
return err
}
logger.GetLogger().Infow("starting track writer",
logger.Infow("starting track writer",
"track", w.track.ID(),
"mime", w.mime)
switch w.mime {
@@ -106,13 +106,13 @@ func (w *TrackWriter) writeOgg() {
}
pageData, pageHeader, err := w.ogg.ParseNextPage()
if err == io.EOF {
logger.GetLogger().Infow("all audio samples parsed and sent")
logger.Infow("all audio samples parsed and sent")
w.onWriteComplete()
return
}
if err != nil {
logger.GetLogger().Errorw("could not parse ogg page", "err", err)
logger.Errorw("could not parse ogg page", "err", err)
return
}
@@ -122,7 +122,7 @@ func (w *TrackWriter) writeOgg() {
sampleDuration := time.Duration((sampleCount/48000)*1000) * time.Millisecond
if err = w.track.WriteSample(media.Sample{Data: pageData, Duration: sampleDuration}); err != nil {
logger.GetLogger().Errorw("could not write sample", "err", err)
logger.Errorw("could not write sample", "err", err)
return
}
@@ -140,19 +140,19 @@ func (w *TrackWriter) writeVP8() {
}
frame, _, err := w.ivf.ParseNextFrame()
if err == io.EOF {
logger.GetLogger().Infow("all video frames parsed and sent")
logger.Infow("all video frames parsed and sent")
w.onWriteComplete()
return
}
if err != nil {
logger.GetLogger().Errorw("could not parse VP8 frame", "err", err)
logger.Errorw("could not parse VP8 frame", "err", err)
return
}
time.Sleep(sleepTime)
if err = w.track.WriteSample(media.Sample{Data: frame, Duration: time.Second}); err != nil {
logger.GetLogger().Errorw("could not write sample", "err", err)
logger.Errorw("could not write sample", "err", err)
return
}
}
+11 -14
View File
@@ -31,11 +31,10 @@ var (
},
},
{
Name: "get-room",
Name: "list-rooms",
Before: createClient,
Action: getRoom,
Action: listRooms,
Flags: []cli.Flag{
roomFlag,
roomHostFlag,
apiKeyFlag,
secretFlag,
@@ -76,17 +75,15 @@ func createRoom(c *cli.Context) error {
return nil
}
func getRoom(c *cli.Context) error {
ctx := contextWithAccessToken(c, &auth.VideoGrant{RoomJoin: true})
roomId := c.String("room")
room, err := roomClient.GetRoom(ctx, &livekit.GetRoomRequest{
Room: roomId,
})
func listRooms(c *cli.Context) error {
ctx := contextWithAccessToken(c, &auth.VideoGrant{RoomList: true})
res, err := roomClient.ListRooms(ctx, &livekit.ListRoomsRequest{})
if err != nil {
return err
}
PrintJSON(room)
for _, rm := range res.Rooms {
fmt.Printf("%s\t%s\n", rm.Sid, rm.Name)
}
return nil
}
@@ -108,16 +105,16 @@ func contextWithAccessToken(c *cli.Context, grant *auth.VideoGrant) context.Cont
ctx := context.Background()
token, err := accessToken(c, grant, "")
if err != nil {
logger.GetLogger().Errorw("Could not get access token", "err", err)
logger.Errorw("Could not get access token", "err", err)
}
if token != "" {
header := make(http.Header)
header.Set("Authorization", "Bearer "+token)
if tctx, err := twirp.WithHTTPRequestHeaders(ctx, header); err == nil {
logger.GetLogger().Debugw("requesting with token")
logger.Debugw("requesting with token")
ctx = tctx
} else {
logger.GetLogger().Errorw("Error setting Twirp auth header", "err", err)
logger.Errorw("Error setting Twirp auth header", "err", err)
}
}
return ctx
+3 -5
View File
@@ -74,10 +74,8 @@ func joinRoom(c *cli.Context) error {
}
}
log := logger.GetLogger()
host := c.String("host")
log.Infow("connecting to Websocket signal", "host", host)
logger.Infow("connecting to Websocket signal", "host", host)
conn, err := client.NewWebSocketConn(host, token)
if err != nil {
return err
@@ -118,7 +116,7 @@ func joinRoom(c *cli.Context) error {
err = handleCommand(rc)
if err != nil {
log.Errorw("could not handle command", "err", err)
logger.Errorw("could not handle command", "err", err)
}
rc.ResumeLogs()
@@ -221,7 +219,7 @@ func handleSignals(rc *client.RTCClient) {
go func() {
sig := <-sigChan
logger.GetLogger().Infow("exit requested, shutting down", "signal", sig)
logger.Infow("exit requested, shutting down", "signal", sig)
rc.Stop()
}()
}
+1 -1
View File
@@ -24,7 +24,7 @@ var (
}
rtcHostFlag = &cli.StringFlag{
Name: "host",
Value: "ws://localhost:7881",
Value: "ws://localhost:7880",
}
apiKeyFlag = &cli.StringFlag{
Name: "api-key",