From b25db3ce2e6e3dd7cae2813d2e04140cb8e84f88 Mon Sep 17 00:00:00 2001 From: paweldomas Date: Fri, 24 Jan 2020 10:11:14 -0600 Subject: [PATCH] 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. --- config.js | 3 +++ connection.js | 10 +++++++++- react/features/base/connection/actions.native.js | 3 ++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/config.js b/config.js index 073b34b3f..8ae74ec12 100644 --- a/config.js +++ b/config.js @@ -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', diff --git a/connection.js b/connection.js index fe725239d..12a1beda6 100644 --- a/connection.js +++ b/connection.js @@ -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( diff --git a/react/features/base/connection/actions.native.js b/react/features/base/connection/actions.native.js index 5bf8441c8..2e474a8fc 100644 --- a/react/features/base/connection/actions.native.js +++ b/react/features/base/connection/actions.native.js @@ -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;