From bfeca8e0688cea15ff7306ad537acc083de9e2a4 Mon Sep 17 00:00:00 2001 From: winlin Date: Tue, 4 May 2021 10:46:56 +0800 Subject: [PATCH] Tools: Add video room demo --- trunk/3rdparty/signaling/main.go | 12 +- trunk/3rdparty/signaling/www/demos/index.html | 16 +- .../signaling/www/demos/js/srs.sig.js | 5 +- .../3rdparty/signaling/www/demos/one2one.html | 28 ++- trunk/3rdparty/signaling/www/demos/room.html | 212 ++++++++++++++++++ 5 files changed, 257 insertions(+), 16 deletions(-) create mode 100644 trunk/3rdparty/signaling/www/demos/room.html diff --git a/trunk/3rdparty/signaling/main.go b/trunk/3rdparty/signaling/main.go index 97daf2d38..e91ec43fc 100644 --- a/trunk/3rdparty/signaling/main.go +++ b/trunk/3rdparty/signaling/main.go @@ -190,10 +190,16 @@ func main() { var self *Participant go func() { <-ctx.Done() - if self != nil { - self.Room.Remove(self) - logger.Tf(ctx, "Remove client %v", self) + if self == nil { + return } + + // Notify other peers that we're quiting. + // @remark The ctx(of self) is done, so we must use a new context. + go self.Room.Notify(context.Background(), self, "leave", "", "") + + self.Room.Remove(self) + logger.Tf(ctx, "Remove client %v", self) }() inMessages := make(chan []byte, 0) diff --git a/trunk/3rdparty/signaling/www/demos/index.html b/trunk/3rdparty/signaling/www/demos/index.html index 0cb04ccc2..15ad717cb 100644 --- a/trunk/3rdparty/signaling/www/demos/index.html +++ b/trunk/3rdparty/signaling/www/demos/index.html @@ -7,7 +7,19 @@

Signaling works!

- Run demo for WebRTC: One to One over SFU(SRS)
- 点击进入SRS一对一通话演示 + Run demo for WebRTC: One to One over SFU(SRS)
+ 点击进入SRS一对一通话演示

+

+ Run demo for WebRTC: Video Room over SFU(SRS)
+ 点击进入SRS多人通话演示 +

+ diff --git a/trunk/3rdparty/signaling/www/demos/js/srs.sig.js b/trunk/3rdparty/signaling/www/demos/js/srs.sig.js index 0a9ee3d61..6446b7bbe 100644 --- a/trunk/3rdparty/signaling/www/demos/js/srs.sig.js +++ b/trunk/3rdparty/signaling/www/demos/js/srs.sig.js @@ -114,6 +114,7 @@ function SrsRtcSignalingParse(location) { autostart = autostart && autostart.split('&')[0] === 'true'; // Remove data in query. + let rawQuery = query; if (query) { query = query.replace('wss=' + wsSchema, ''); query = query.replace('wsh=' + wsHost, ''); @@ -128,7 +129,7 @@ function SrsRtcSignalingParse(location) { query = query.replace('&&', '&'); } query = query.replace('?&', '?'); - if (query.lastIndexOf('?') == query.length - 1) { + if (query.lastIndexOf('?') === query.length - 1) { query = query.substr(0, query.length - 1); } } @@ -137,7 +138,7 @@ function SrsRtcSignalingParse(location) { wsHost = wsPort? wsHost.split(':')[0] + ':' + wsPort : wsHost; return { - query: query, wsSchema: wsSchema, wsHost: wsHost, host: host, + query: query, rawQuery: rawQuery, wsSchema: wsSchema, wsHost: wsHost, host: host, room: room, display: display, autostart: autostart, }; } diff --git a/trunk/3rdparty/signaling/www/demos/one2one.html b/trunk/3rdparty/signaling/www/demos/one2one.html index e4dddb210..6ec7d0b43 100644 --- a/trunk/3rdparty/signaling/www/demos/one2one.html +++ b/trunk/3rdparty/signaling/www/demos/one2one.html @@ -15,15 +15,16 @@ - +