loleaflet/js/global.js       |    9 ++++++---
 loleaflet/js/main.js         |   10 ++--------
 loleaflet/src/core/Socket.js |   22 ++++++++++------------
 loleaflet/src/map/Map.js     |    4 ++--
 4 files changed, 20 insertions(+), 25 deletions(-)

New commits:
commit 2774a048332b5a430abc00aa904eec57f8f40efb
Author:     Henry Castro <hcas...@collabora.com>
AuthorDate: Thu Mar 7 14:02:15 2019 -0400
Commit:     Henry Castro <hcas...@collabora.com>
CommitDate: Thu Mar 7 14:13:52 2019 -0400

    loleaflet: improve early "websocket" connection
    
    Normally the "websocket" is created and start a connection when browser
    evaluate "bundle.js" after download it.
    So we create an early "websocket" connection after the browser parse
    "loleaflet.html" and start receiving tiles to improve load page
    performance
    
    Change-Id: I56fca7a2da39031222c1d43781825997221385a1

diff --git a/loleaflet/js/global.js b/loleaflet/js/global.js
index f46f68a26..c6994ef84 100644
--- a/loleaflet/js/global.js
+++ b/loleaflet/js/global.js
@@ -118,9 +118,8 @@
                }
        }
 
+       global.queueMsg = [];
        if (global.socket && global.socket.readyState !== 3) {
-               global.queueMsg = [];
-
                global.socket.onopen = function () {
                        if (global.socket.readyState === 1) {
                                var ProtocolVersionNumber = '0.1';
@@ -138,7 +137,11 @@
                }
 
                global.socket.onmessage = function (event) {
-                       global.queueMsg.push(event.data);
+                       if (global.L && global.socket instanceof L.Socket) {
+                               global.socket._onMessage(event);
+                       } else {
+                               global.queueMsg.push(event.data);
+                       }
                }
 
                global.socket.binaryType = 'arraybuffer';
diff --git a/loleaflet/js/main.js b/loleaflet/js/main.js
index da0355451..ac25ff3f1 100644
--- a/loleaflet/js/main.js
+++ b/loleaflet/js/main.js
@@ -75,15 +75,9 @@ map.addControl(L.control.alertDialog());
 map.addControl(L.control.lokDialog());
 map.addControl(L.control.contextMenu());
 map.addControl(L.control.infobar());
-if (global.socket && (global.socket.readyState === 1 || 
global.socket.readyState === 0)) {
-       map._socket.attach(global.socket, global.queueMsg);
-} else {
-       map.loadDocument();
-}
-
-delete global.socket;
-delete global.queueMsg;
+map.loadDocument(global.socket);
 
+global.socket = map._socket;
 window.addEventListener('beforeunload', function () {
        if (map && map._socket) {
                map._socket.close();
diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js
index 5b0b48888..b48d33935 100644
--- a/loleaflet/src/core/Socket.js
+++ b/loleaflet/src/core/Socket.js
@@ -23,7 +23,7 @@ L.Socket = L.Class.extend({
                this._msgQueue = [];
        },
 
-       connect: function() {
+       connect: function(socket) {
                var map = this._map;
                if (map.options.permission) {
                        map.options.docParams['permission'] = 
map.options.permission;
@@ -34,7 +34,9 @@ L.Socket = L.Class.extend({
                if (window.ThisIsAMobileApp) {
                        this.socket = new window.FakeWebSocket();
                        window.TheFakeWebSocket = this.socket;
-               } else {
+               } else if (socket && (socket.readyState === 1 || 
socket.readyState === 0)) {
+                       this.socket = socket;
+               } else  {
                        var wopiSrc = '';
                        if (map.options.wopiSrc != '') {
                                wopiSrc = '?WOPISrc=' + map.options.wopiSrc + 
'&compat=/ws';
@@ -78,17 +80,13 @@ L.Socket = L.Class.extend({
                        this._accessTokenExpireTimeout = 
setTimeout(L.bind(this._sessionExpiredWarning, this),
                                                                    
parseInt(map.options.docParams.access_token_ttl) - Date.now() - 
tokenExpiryWarning);
                }
-       },
 
-       attach: function (socket, msgQueue) {
-               this.socket = socket;
-               this.socket.onerror = L.bind(this._onSocketError, this);
-               this.socket.onclose = L.bind(this._onSocketClose, this);
-               this.socket.onopen = L.bind(this._onSocketOpen, this);
-               this.socket.onmessage = L.bind(this._onMessage, this);
-
-               for (var it = 0; it < msgQueue.length; it++) {
-                       this._onMessage({data: msgQueue[it]});
+               // process messages for early socket connection
+               if (window.queueMsg && window.queueMsg.length > 0) {
+                       for (var it = 0; it < window.queueMsg.length; it++) {
+                               this._onMessage({data: window.queueMsg[it]});
+                       }
+                       window.queueMsg = [];
                }
        },
 
diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js
index b0a5b9da5..deb38cb57 100644
--- a/loleaflet/src/map/Map.js
+++ b/loleaflet/src/map/Map.js
@@ -224,8 +224,8 @@ L.Map = L.Evented.extend({
                }, this);
        },
 
-       loadDocument: function() {
-               this._socket.connect();
+       loadDocument: function(socket) {
+               this._socket.connect(socket);
        },
 
        sendInitUNOCommands: function() {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to