diff --git a/static/css/pad.css b/static/css/pad.css index 924299bff..9caad9930 100644 --- a/static/css/pad.css +++ b/static/css/pad.css @@ -533,7 +533,7 @@ table#otheruserstable { display: none; } margin-bottom: 10px; } #connectionboxinner .disconnected p { - margin: 10px 10px; + margin: 10px 0; font-size: 1.2em; line-height: 1.1; color: #333; diff --git a/static/js/collab_client.js b/static/js/collab_client.js index bb68f6040..0eb275d6e 100644 --- a/static/js/collab_client.js +++ b/static/js/collab_client.js @@ -277,9 +277,38 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options, _pad) setChannelState("CONNECTED"); } } - + + var disconnectedMessages = []; + + function processDisconnectedMessages() + { + //assume that it is connected + var len = disconnectedMessages.length; + while(disconnectedMessages.length) + { + var msg = disconnectedMessages.shift();//remove from the array + _sendMessage(msg);//process. + } + } + function sendMessage(msg) { + + if(channelState != "CONNECTED") + { + console.log("Channel is not connected WAITING"); + disconnectedMessages.push(msg); + return; + } + + _sendMessage(msg); + } + + function _sendMessage(msg) + { + console.log("sending msg =>"); + console.log(msg); + getSocket().json.send( { type: "COLLABROOM", @@ -287,7 +316,7 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options, _pad) data: msg }); } - + function wrapRecordingErrors(catcher, func) { return function() @@ -671,7 +700,8 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options, _pad) getMissedChanges: getMissedChanges, callWhenNotCommitting: callWhenNotCommitting, addHistoricalAuthors: tellAceAboutHistoricalAuthors, - setChannelState: setChannelState + setChannelState: setChannelState, + processDisconnectedMessages: processDisconnectedMessages }; $(document).ready(setUpSocket); diff --git a/static/js/pad.js b/static/js/pad.js index 743ab3601..a05a0b7e6 100644 --- a/static/js/pad.js +++ b/static/js/pad.js @@ -203,8 +203,13 @@ function handshake() msg.client_rev=pad.collabClient.getCurrentRevisionNumber(); msg.reconnect=true; } - + console.log("sending CLIENT_READY =>"); + console.log(msg); socket.json.send(msg); + if(isReconnect == true) + { + pad.collabClient.processDisconnectedMessages(); + } }; var disconnectTimeout; @@ -219,9 +224,8 @@ function handshake() { clearTimeout(disconnectTimeout); } - - pad.collabClient.setChannelState("CONNECTED"); sendClientReady(true); + pad.collabClient.setChannelState("CONNECTED"); }); socket.on('disconnect', function (reason) { @@ -703,10 +707,10 @@ var pad = { { padconnectionstatus.reconnecting(); - padeditor.disable(); + /*padeditor.disable(); padeditbar.disable(); paddocbar.disable(); - padimpexp.disable(); + padimpexp.disable();*/ } else if (newState == "DISCONNECTED") {