feat(config.js): add 'websocket' config option

Config.js will allow to specify both BOSH and Websocket URLs. In such
case the web app will prefer Websocket over BOSH. The reason is that it
appears to be more stable and a bit fast on web, while on mobile
websocket is dropped fast(killed by the OS) on network changes.
This commit is contained in:
paweldomas 2020-01-24 10:11:14 -06:00 committed by Paweł Domas
parent 31d9fb12c8
commit b25db3ce2e
3 changed files with 14 additions and 2 deletions

View File

@ -30,6 +30,9 @@ var config = {
// BOSH URL. FIXME: use XEP-0156 to discover it.
bosh: '//jitsi-meet.example.com/http-bind',
// Websocket URL
// websocket: 'wss://jitsi-meet.example.com/xmpp-websocket',
// The name of client node advertised in XEP-0115 'c' stanza
clientNode: 'http://jitsi.org/jitsimeet',

View File

@ -75,7 +75,15 @@ function connect(id, password, roomName) {
const connectionConfig = Object.assign({}, config);
const { issuer, jwt } = APP.store.getState()['features/base/jwt'];
connectionConfig.bosh += `?room=${roomName}`;
// Use Websocket URL for the web app if configured. Note that there is no 'isWeb' check, because there's assumption
// that this code executes only on web browsers/electron. This needs to be changed when mobile and web are unified.
let serviceUrl = connectionConfig.websocket || connectionConfig.bosh;
serviceUrl += `?room=${roomName}`;
// FIXME Remove deprecated 'bosh' option assignment at some point(LJM will be accepting only 'serviceUrl' option
// in future). It's included for the time being for Jitsi Meet and lib-jitsi-meet versions interoperability.
connectionConfig.serviceUrl = connectionConfig.bosh = serviceUrl;
const connection
= new JitsiMeetJS.JitsiConnection(

View File

@ -312,7 +312,8 @@ function _constructOptions(state) {
room && (bosh += `?room=${getBackendSafeRoomName(room)}`);
options.bosh = bosh;
// FIXME Remove deprecated 'bosh' option assignment at some point.
options.serviceUrl = options.bosh = bosh;
}
return options;