Commit Graph

139 Commits

Author SHA1 Message Date
Paulo Lanzarin
e1dc4b55e4
fix(bbb-html5): customHeartbeat would not close stale sessions, + (#19017)
* fix(bbb-html5): customHeartbeat would not close stale sessions, +

The [disabled by default] custom heartbeat included in Meteor's server
does not end connections when they are considered unhealthy/stale, which
deviates a bit from the default implementation. See:
https://github.com/bigbluebutton/bigbluebutton/pull/11486.

This commit includes a call to the default heartbeat termination timeout
so sockets are correctly cleaned up when the custom heartbeat is
activated. It also adds a customHeartbeatUseDataFrames config to allow
controlling whether the custom heartbeat should use WS data frames as
valid heartbeats as well - this should only be useful for
testing/debugging purposes and the default behavior (true) is
maintained.

As a side note: this change spun off from an investigation where some
problematic networks were triggering periodic client re-connects due to
the default heartbeat failing. Investigation points to the control
frames being put alongside fragmented WS data frames and the server side
failing to recognize the former - which means pong frames would be missed and
the health check would fail. Since the default heartbeat _does not_
account for data frame traffic (eg DDP payloads), it would shut down the
client's WS even though it was healthy.
The custom heartbeat _does_ account for data frames, which mitigates
that scenario and prevents unecessary reconnections.

* fix(bbb-html5): frontend crash due to undefined vars in customHeartbeat 

Meteor frontends may crash when customHeartbeat is enabled
due to an undefined access in the heartbeat`s logger.

Add optional chaining to the session props access so it won`t crash and tune down some log levels around that area.
2024-01-22 11:10:41 -05:00
Anton Georgiev
ec2ad5ed45 chore: upgrade NodeJS to 18 2023-06-13 12:08:58 -04:00
Ramón Souza
4b4afb6916 remove empty object in logs 2022-10-03 13:48:00 -03:00
Ramón Souza
ab50d4d60e add settings 2022-09-16 13:01:07 -03:00
Ramón Souza
7bb26b64ff add server health log 2022-09-16 11:09:04 -03:00
Ramon Souza
07f9a192b9 Merge remote-tracking branch 'upstream/v2.4.x-release' into merge-2425-apr27 2022-04-27 15:32:20 -03:00
Gustavo Trott
720a986d86 Remove html5client/useragent handler 2022-04-25 20:47:59 -03:00
germanocaumo
640fe57a26 fix(html5): rename stream-cursor prom metric
Removes meetintId info from the event name in prometheus metric to better concur with other events.
2022-04-08 14:22:29 +00:00
KDSBrowne
e184912311 prevent properties of undefined (reading 'toUpperCase') 2021-11-22 00:55:51 +00:00
germanocaumo
3dd679761f Merge branch 'v2.4.x-release' of https://github.com/bigbluebutton/bigbluebutton into f-h-prom-agent 2021-11-05 19:38:40 +00:00
prlanzarin
b677f805c1 refactor(virtual-backgrounds): move WASM binaries to public, let nginx serve them 2021-10-14 03:50:39 +00:00
germanocaumo
8b2fd271de feat(html5-server): add number of meteor methods metric in prometheus 2021-10-06 19:02:36 +00:00
germanocaumo
30db4a4122 refactor(html5-prometheus): remove MCS references and change default port 2021-10-06 18:56:32 +00:00
germanocaumo
a0580431e0 feat(html5-server): add prometheus default instrumentation
Adds prometheus client to collect html5 server metrics.
Only default Node.js metrics in this initial version.

Enable via configs in private.app.prometheus
2021-10-06 18:55:19 +00:00
prlanzarin
9071ba8bc4 refactor(virtual-backgrounds): re-organize virtual background code
Changes (maybe not a complete list):
  - Disable virtualbgs by default
  - Move the virtualbg selector in video-preview to the side below the
profile selection
  - Restore old video-preview sizes
  - Add a wrapper class for MediaStreams (BBBVideoStream)
  - Centralize virtualbg services and business logic code into BBBVideoStream
  - Refactor and centralize virtualbg constant fetching
  - Refactor and centralize virtualbg config fetching
  - Organize virtualbg type definitions
  - Remove added states in video-provider to prevent further bloat
  - Remove added states in video-preview to prevent further bloat
  - Lock virtual bg switching while video-preview itself is locked
  - Add proper virtualbg error surfacing via toasts
  - Refactor iOS availability detection to use centralized UA checker
  - Avoid calling gUM when toggling virtualbgs on/off
  - Make virtualbg video-list-item action a toggle instead of a
state-aware action
  - Make virtualbg switching work in video-preview for cameras that are
already shared. Especially useful when there are multiple source
cameras, and will be important in the near future
  - Add Derivative Work notices in files that are partially copied from
jitsi-meet
  - Simplify track replacing in video-provider
  - Split video-preview UI code for virtualbgs into a separate functional component
2021-07-22 18:53:42 +00:00
Bartu Bazna
9f791a8892 Squashed virtual background commits 2021-07-21 20:00:19 +00:00
Ramon Souza
34007f5bc5 lint 2021-05-20 15:14:19 -03:00
Ramon Souza
f3260ed8bf handle additional cases for locales 2021-05-20 14:01:58 -03:00
Ramón Souza
0105373cee
Applies changes needed to serve locale files as static content (#11234)
* moving locales folder to /public and applying changes needed to serve locales as static files

* better dev/prod check

* transifex pull script changes to match new locales directory + ignore locales with less than 100 lines

* fix local/prod locales path

* merge fallback messages

* applies new locale changes to legacy client

`bbb-html5.nginx` file content should also be changed to the following:

```
location /html5client/locales {
  alias /usr/share/meteor/bundle/programs/web.browser/app/locales;
}

location /html5client/compatibility {
  alias /usr/share/meteor/bundle/programs/web.browser/app/compatibility;
}

location /html5client/resources {
  alias /usr/share/meteor/bundle/programs/web.browser/app/resources;
}

location /html5client/svgs {
  alias /usr/share/meteor/bundle/programs/web.browser/app/svgs;
}

location /html5client/fonts {
  alias /usr/share/meteor/bundle/programs/web.browser/app/fonts;
}

location /html5client {
  # proxy_pass http://127.0.0.1:4100; # use for development
  proxy_pass http://poolhtml5servers; # use for production
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "Upgrade";
}
```
2021-03-11 06:42:41 -05:00
Ramon Souza
fb22eca58d fix legacy client with customHeartbeat:false 2021-03-10 15:14:25 -03:00
Anton Georgiev
111109674e
Merge pull request #11247 from ramonlsouza/language-dropdown
Reduces the number of options displayed on locale settings dropdown
2021-02-22 15:44:29 -05:00
Anton Georgiev
f43560d535 Support for backend vs frontend nodejs instances bbb-html5 2021-02-16 03:19:31 +00:00
Anton Georgiev
8c0f0fdd52 Split Meteor roles backend-frontend revisit 2021-02-05 17:47:46 +00:00
Ramon Souza
55651506a4 improve language selector filter, closes #10706 2021-02-02 15:44:58 -03:00
Anton Georgiev
c1ffced27d Merge branch 'v2.2.x-release' of github.com:bigbluebutton/bigbluebutton into develop 2020-12-17 21:14:29 +00:00
Joao Siebel
c5b8f30f5d Add option to generate heapdump file and improve metrics 2020-12-15 13:10:39 -03:00
Anton Georgiev
0be8773e4c Loadbalance bbb-html5 in bbb-web based on CPU 2020-12-11 21:36:06 +00:00
Joao Siebel
0020d2b079 Add try/catch in custom send function 2020-12-08 19:53:33 +00:00
Joao Siebel
6e529e5292 Add try/catch to heartbeat function 2020-12-08 19:53:33 +00:00
Joao Siebel
240b75ea65 cherry-pick PR #10953 2020-12-08 19:50:18 +00:00
Joao Siebel
fc1b06c3e7 Add try/catch in custom send function 2020-12-03 15:07:24 -03:00
Joao Siebel
5d95e5ca1d Add try/catch to heartbeat function 2020-12-02 16:43:34 -03:00
Joao Siebel
d9a046fba9 Log uncaught errors in node 2020-12-02 16:06:42 -03:00
Anton Georgiev
244a239810 Merge branch 'v2.2.x-release' of github.com:bigbluebutton/bigbluebutton into 2020-12-01-merge 2020-12-01 20:02:50 +00:00
Anton Georgiev
f34826718d include instanceId in resources url 2020-11-30 16:09:35 +00:00
Joao Siebel
c34d5381fe Add flag to enable/disable custom heartbeat functions 2020-11-26 11:19:59 -03:00
Tainan Felipe
8650e0500b Port socket sockejs timeout to 2.3 2020-11-20 14:31:24 -03:00
Joao Siebel
b6b211f4fb Tweak heartbeat 2020-11-16 18:37:25 -03:00
Joao Siebel
1c47023e8a Add original function link for reference 2020-11-16 10:46:18 -03:00
Joao Siebel
3a2d06fd88 Tweak sockjs timeout value 2020-11-13 18:41:56 -03:00
Anton Georgiev
5ba12846d5
Update index.js 2020-10-28 15:17:17 -04:00
Joao Siebel
dadca62741 Merge remote-tracking branch 'upstream/develop' into connection-manager 2020-10-13 10:49:12 -03:00
Anton Georgiev
124b2d9b51
Merge branch 'develop' into move-guest-wait 2020-09-21 16:28:59 -04:00
Joao Siebel
b2adffa4c2 Merge remote-tracking branch 'upstream/develop' into connection-manager 2020-09-18 16:30:20 -03:00
Anton Georgiev
3b2446989e recalculate locales on new request if there was issue on start 2020-09-10 14:32:42 +00:00
Anton Georgiev
fd0e69c280 Added fallback support for Armenian, Georgian, Occitan 2020-09-10 03:21:41 +00:00
Anton Georgiev
707f80a785 Only calculate locales list once, on process start 2020-09-10 01:27:03 +00:00
Anton Georgiev
e3d1fa2c17 return all locales, not just an empty [] 2020-09-10 00:37:43 +00:00
Joao Siebel
6e4e0a510a Merge branch 'remove-user-on-exit' into connection-manager 2020-09-08 16:36:01 -03:00
Joao Siebel
b8f42ac712 Create ClientConnections structure and auth-token-validation collection 2020-09-01 09:07:56 -03:00