From ff2ebd76f18ab6e9520c532847845a2280f8fe95 Mon Sep 17 00:00:00 2001 From: Alexandre Iooss Date: Thu, 22 Oct 2020 18:41:14 +0200 Subject: [PATCH] Make viewer able to change quality --- web/static/js/modules/websocket.js | 2 +- web/static/js/viewer.js | 4 ++-- web/template/player.html | 8 ++++---- web/websocket_handler.go | 8 ++++---- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/web/static/js/modules/websocket.js b/web/static/js/modules/websocket.js index d77a4e6..3564670 100644 --- a/web/static/js/modules/websocket.js +++ b/web/static/js/modules/websocket.js @@ -40,7 +40,7 @@ export class GsWebSocket { setTimeout(() => this.sendDescription(localDescription, stream, quality), 100); return; } - console.log("[WebSocket] Sending WebRTC local session description"); + console.log(`[WebSocket] Sending WebRTC local session description for stream ${stream} quality ${quality}`); this.socket.send(JSON.stringify({ "webRtcSdp": localDescription, "stream": stream, diff --git a/web/static/js/viewer.js b/web/static/js/viewer.js index ded1a83..42e8b41 100644 --- a/web/static/js/viewer.js +++ b/web/static/js/viewer.js @@ -81,7 +81,7 @@ export function initViewerPage(stream, stunServers, viewersCounterRefreshPeriod) quality = event.target.value; console.log(`Stream quality changed to ${quality}`); - // Restart the connection with a new quality - // FIXME + // Restart WebRTC negociation + webrtc.createOffer(); }); } diff --git a/web/template/player.html b/web/template/player.html index e5efc69..6cdd650 100644 --- a/web/template/player.html +++ b/web/template/player.html @@ -8,10 +8,10 @@
srt://{{.Cfg.Hostname}}:{{.Cfg.SRTServerPort}}?streamid={{.Path}} diff --git a/web/websocket_handler.go b/web/websocket_handler.go index e774135..f363b34 100644 --- a/web/websocket_handler.go +++ b/web/websocket_handler.go @@ -36,21 +36,21 @@ func websocketHandler(w http.ResponseWriter, r *http.Request) { err = conn.ReadJSON(c) if err != nil { log.Printf("Failed to receive client description: %s", err) - return + continue } // Get requested stream stream, err := streams.Get(c.Stream) if err != nil { log.Printf("Stream not found: %s", c.Stream) - return + continue } // Get requested quality q, err := stream.GetQuality(c.Quality) if err != nil { log.Printf("Quality not found: %s", c.Quality) - return + continue } // Exchange session descriptions with WebRTC stream server @@ -61,7 +61,7 @@ func websocketHandler(w http.ResponseWriter, r *http.Request) { // Send new local description if err := conn.WriteJSON(localDescription); err != nil { log.Println(err) - return + continue } } }