Commit Graph

2971 Commits

Author SHA1 Message Date
Paulo Lanzarin
14c92a3843
feat: add experimental support for ICE restart (#21208)
We currently use full renegotiation for audio, video, and screen sharing
reconnections, which involves re-creating transports and signaling channels
from scratch. While effective in some scenarios, this approach is slow and,
especially with outbound cameras and screen sharing, prone to failures.

To counter that, WebRTC provides a mechanism to restart ICE without needing
to re-create the peer connection. This allows us to avoid full renegotiation
and bypass some server-side signaling limitations. Implementing ICE restart
should make outbound camera/screen sharing reconnections more reliable and
faster.

This commit implements the ICE restart procedure for all WebRTC components'
*outbound* peers. It is based on bbb-webrtc-sfu >= v2.15.0-beta.0, which
added support for ICE restart requests. This feature is *off by default*.
To enable it, adjust the following flags:
- `/etc/bigbluebutton/bbb-webrtc-sfu/production.yml`: `allowIceRestart: true`
- `/etc/bigbluebutton/bbb-html5.yml`: `public.kurento.restartIce`
  * Refer to the inline documentation; this can be enabled on the client side
    per media type.
  * Note: The default max retries for audio is lower than for cameras/screen
    sharing (1 vs 3). This is because the full renegotiation process for audio
    is more reliable, so ICE restart is attempted first, followed by full
    renegotiation if necessary. This approach is less suitable for cameras/
    screen sharing, where longer retry periods for ICE restart make sense
    since full renegotation there is... iffy.

Endpoints that are inbound/`recvonly` only (client's perspective) do *not*
support ICE restart yet. There are two main reasons:
  - Server-side changes are required to support `recvonly` endpoints,
    particularly the proper handling of the server’s `setup` role in the
    its SDPs during an ICE restart. These changes are too broad for now,
    so they are deferred to future releases (SFU@v2.16).
  - Full reconnections for `recvonly` endpoints are currently reliable,
    unlike for `send*` endpoints. ICE restarts could still provide benefits
    for `recvonly` endpoints, but we need the server updates first.
2024-09-20 06:35:32 -04:00
prlanzarin
325887e325 feat(audio): rework audio join without listen only
This is a rework of the audio join procedure whithout the explict listen
only separation in mind. It's supposed to be used in conjunction with
the transparent listen only feature so that the distinction between
modes is seamless with minimal server-side impact. An abridged list of
changes:
  - Let the user pick no input device when joining microphone while
    allowing them to set an input device on the fly later on
  - Give the user the option to join audio with no input device whenever
    we fail to obtain input devices, with the option to try re-enabling
    them on the fly later on
  - Add the option to open the audio settings modal (echo test et al)
    via the in-call device selection chevron
  - Rework the SFU audio bridge and its services to support
    adding/removing tracks on the fly without renegotiation
  - Rework the SFU audio bridge and its services to support a new peer
    role called "passive-sendrecv". That role is used by dupled peers
    that have no active input source on start, but might have one later
    on.
  - Remove stale PermissionsOverlay component from the audio modal
  - Rework how permission errors are detected using the Permissions API
  - Rework the local echo test so that it uses a separate media tag
    rather than the remote
  - Add new, separate dialplans that mute/hold FreeSWITCH channels on
    hold based on UA strings. This is orchestrated server-side via
    webrtc-sfu and akka-apps. The basic difference here is that channels
    now join in their desired state rather than waiting for client side
    observers to sync the state up. It also mitigates transparent listen
    only performance edge cases on multiple audio channels joining at
    the same time.

The old, decoupled listen only mode is still present in code while we
validate this new approach. To test this, transparentListenOnly
must be enabled and listen only mode must be disable on audio join so
that the user skips straight through microphone join.
2024-08-15 00:43:28 +00:00
Tainan Felipe
4d6f4b3ded
Refactor: Make bundle using webpack (#20811)
* Refactor: Make bundle using webpack

* Fix: restore after install codes and a few settings

* Fix: build script folder permission

* Refactor: Remove support to async import on audio bridges

* Upgrade npm using nvm

* Avoid questions on npm ci execution

* Let npm ci install dev dependencies (as we need the build tools here)

* Fix: enconding

* Fix: old lock files

* Remove: bbb-config dependency to bbb-html5 service, bbb-html5 isn't a service anymore

* Fix: TS errors

* Fix: eslint

* Fix: chat styles

* npm install with "lockfileVersion": 3 (newer npm)

* build: allow nodejs 22

* node 22; drop meteor from CI and bbb-conf

* TEMP: use bbb-install without mongo but with node 22 and newer image

* build: relax nodejs condition to not trip 22.6

* build: ensure dir /usr/share/bigbluebutton/nginx exists

* init sites-available/bbb; drop disable-transparent-

* nginx complaining of missing file and ;

* TMP: print status of services

* WIP: tweak nginx location to debug

* Fix: webcam widgets alignments

* akka-apps -- update location of settings.yml

* build: add locales path for nginx

* docs and config changes for removal of meteor

* Fix: build encoding and locales enpoint folder path

* build: set wss url for media

* Add: Enable minimizer and modify to Terser

* Fix: TS errors

---------

Co-authored-by: Tiago Jacobs <tiago.jacobs@gmail.com>
Co-authored-by: Anton Georgiev <anto.georgiev@gmail.com>
Co-authored-by: Anton Georgiev <antobinary@users.noreply.github.com>
2024-08-09 13:58:44 -04:00
João Victor
433a4a2e04 refactor(html5): centralize /bigbluebutton/api requests 2024-07-19 11:27:48 -03:00
João Victor
50d445f026 Remove Meteor backend 2024-07-02 14:58:58 -03:00
João Victor
78958ccf45 Remove meeting adapter consumption 2024-06-14 10:30:48 -03:00
Ramón Souza
7514066fc3
fix: Client can't load in certain cases (#20336)
* move settings

* remove meteor cache files
2024-05-29 09:26:11 -04:00
Gustavo Trott
9286219d02 html5: remove seemingly unnecessary files 2024-05-13 09:54:45 -03:00
Tainan Felipe
304838f213 Remove: meeting meteor server files 2024-04-25 17:58:24 -03:00
Tainan Felipe
7096620781 Remove: video stream meteor server files 2024-04-25 17:53:47 -03:00
Tainan Felipe
c2399fa5b3 Merge remote-tracking branch 'upstream/v3.0.x-release' into remove-meteor-server-dependencies-2 2024-04-25 16:41:14 -03:00
Ramón Souza
7247407e7d
Merge pull request #20061 from JoVictorNunes/remove-video-streams-collection
Remove old `video-streams` Meteor subscription
2024-04-25 16:38:17 -03:00
Tiago Jacobs
023a7b1e4f
Merge pull request #20091 from ramonlsouza/remove-makecall
refactor: Remove remaining makecall
2024-04-25 16:36:43 -03:00
Tainan Felipe
5643305db2 Remove: pads meteor server files 2024-04-25 15:52:08 -03:00
João Victor
6e41d720a0 Remove video-streams publisher 2024-04-25 15:40:54 -03:00
Tainan Felipe
ef31289a2c Remove: voice users meteor server files 2024-04-25 14:31:26 -03:00
Tainan Felipe
773884af88 Remove: Timer meteor server files 2024-04-25 14:19:05 -03:00
Tainan Felipe
946c440bc2 Remove: screenshare meteor server files 2024-04-25 14:11:49 -03:00
Tainan Felipe
3142557849 Remove: external video player meteor server files 2024-04-25 14:06:38 -03:00
Tainan Felipe
60b8aa9452 Remove: connection status meteor server 2024-04-25 14:00:11 -03:00
Tainan Felipe
e792a0d368 Remove: breakout server part 2024-04-25 13:57:44 -03:00
Tainan Felipe
8b7bd55287 Remove: Auth and annotation collections usage 2024-04-25 13:52:07 -03:00
Gustavo Trott
eb74c81c6f akka apps will send msg to create pad 2024-04-25 13:41:32 -03:00
Gustavo Trott
2e8cc21a4b Move SharedNotes init to akka-apps (instead of Meteor) 2024-04-25 12:48:52 -03:00
Tainan Felipe
6247c4dc8d Remove: meteor connection validation 2024-04-25 12:48:48 -03:00
Tainan Felipe
3784986712 Remove: meteor unused publishers 2024-04-25 12:26:30 -03:00
Ramón Souza
16ba97ffb1 remove userActivitySign makecall + fix inactivity check 2024-04-25 11:53:56 -03:00
Gustavo Trott
ab97cc60a2 Move Timer init to akka-apps (instead of Meteor) 2024-04-25 11:02:03 -03:00
Gustavo Trott
a527ea659d
Merge pull request #20081 from gustavotrott/bbbweb-loginurl
feature: Add new API /create param `loginURL`
2024-04-25 08:47:12 -03:00
Gustavo Trott
4f77369620
Update addMeeting.js 2024-04-25 00:17:58 -03:00
Ramón Souza
d292e23f20
Merge pull request #20077 from Tainan404/migrate-user-settings
Refactor: Migrate user settings
2024-04-24 18:04:27 -03:00
Tainan Felipe
cc79bb5fb2 Refactor: user reaction to graphql 2024-04-24 15:45:28 -03:00
Tainan Felipe
10443e1f40 Merge remote-tracking branch 'upstream/v3.0.x-release' into migrate-user-settings 2024-04-24 11:20:58 -03:00
Tainan Felipe
97393f6aa0 Fix: remove user-settings subscription 2024-04-24 11:18:58 -03:00
Anton Georgiev
23294ad71d
Merge pull request #20068 from Tainan404/remove-user-info
!remove: user-info collection
2024-04-24 10:15:33 -04:00
Ramón Souza
f131194d9c
Merge pull request #20071 from Tainan404/remove-presentation-upload-token
Remove: presentation upload token subscription
2024-04-24 11:03:20 -03:00
Ramón Souza
ab04b57087
Merge pull request #20063 from Tainan404/remove-voice-call-state
Remove: voice call state
2024-04-24 10:45:10 -03:00
Tainan Felipe
e6c4e06c81 Merge remote-tracking branch 'upstream/v3.0.x-release' into remove-user-info 2024-04-24 09:13:59 -03:00
Tainan Felipe
9eaecca7c6 Remove: whiteboard-multi-user subscription 2024-04-23 18:09:19 -03:00
Tainan Felipe
7165961444 Merge remote-tracking branch 'upstream/v3.0.x-release' into remove-voice-call-state 2024-04-23 17:34:41 -03:00
Ramón Souza
9a8a2fd98b
Merge pull request #20028 from Tainan404/refactor-captions
Refactor: move captions to graphql
2024-04-23 17:22:01 -03:00
Tainan Felipe
f5fdc915cf Remove: presentation upload token subscription 2024-04-23 16:51:08 -03:00
Tainan Felipe
e80cc5a223 Remove: user-info collection 2024-04-23 14:38:07 -03:00
Tainan Felipe
d8195ba985 Remove: recording meeting collection 2024-04-23 11:58:33 -03:00
Tainan Felipe
80397964aa Remove: voice call state 2024-04-22 23:20:45 -03:00
Tainan Felipe
3d9a0fc75e Remove: auth token validation code from frontend 2024-04-22 21:42:48 -03:00
Tainan Felipe
77ded6548b Merge remote-tracking branch 'upstream/v3.0.x-release' into refactor-captions 2024-04-22 19:07:35 -03:00
Ramón Souza
4b2df4738e
Merge pull request #20050 from Tainan404/remove-typed-captions
Remove: typed captions
2024-04-22 18:15:36 -03:00
Ramón Souza
16ceb91936 fix not a function error; 2024-04-22 14:36:26 -03:00
Ramón Souza
943a8b6289
Update bigbluebutton-html5/imports/api/captions/server/helpers.js 2024-04-19 16:49:08 -03:00