Implement lock mechanisms for spreadsheets

This commit is contained in:
yflory
2019-01-24 15:26:35 +01:00
parent 2ac176eeec
commit ec2f21ec64
5 changed files with 521 additions and 307 deletions

View File

@@ -4186,105 +4186,86 @@ AscBrowser.convertToRetinaValue = function(value, isScale)
});
};
DocsCoApi.prototype._initSocksJs = function () {
var t = this;
var sockjs;
sockjs = this.sockjs = {};
var send = function (data) {
setTimeout(function () {
console.log(data);
this.onmessage({
data: JSON.stringify(data)
});
});
};
var license = {
type: 'license',
license: {
type: 3,
light: false,
trial: false,
rights: 1,
buildVersion: "4.3.3",
buildNumber: 4,
branding: false
}
};
var channel;
send(license);
require([
'/common/outer/worker-channel.js',
'/common/common-util.js'
], function (Channel, Util) {
var msgEv = Util.mkEvent();
var p = window.parent;
window.addEventListener('message', function (msg) {
if (msg.source !== p) { return; }
msgEv.fire(msg);
});
var postMsg = function (data) {
p.postMessage(data, '*');
};
Channel.create(msgEv, postMsg, function (chan) {
channel = chan;
send(license);
chan.on('RTMSG', function (data) {
console.log('receiving RTMSG', data);
});
});
});
sockjs.onopen = function() {
t._state = ConnectionState.WaitAuth;
t.onFirstConnect();
};
sockjs.onopen();
DocsCoApi.prototype._initSocksJs = function () {
var t = this;
var sockjs;
sockjs = this.sockjs = {};
sockjs.close = function () {
console.error('Close realtime');
};
sockjs.send = function (data) {
console.log(data);
try {
var obj = JSON.parse(data);
} catch (e) {
console.error(e);
return;
}
var msg, msg2;
switch (obj.type) {
case 'auth':
msg = {
"type":"auth",
"result":1,
"sessionId":"08e77705-dc5c-477d-b73a-b1a7cbca1e9b",
"sessionTimeConnect":+new Date(),
"participants":[]
};
msg2 = {
"type":"documentOpen",
"data":{"type":"open","status":"ok","data":{"Editor.bin":obj.openCmd.url}}
};
send(msg);
send(msg2);
break;
case 'getMessages':
msg = {};
break;
}
};
var send = function (data) {
setTimeout(function () {
console.log(data);
sockjs.onmessage({
data: JSON.stringify(data)
});
});
};
var license = {
type: 'license',
license: {
type: 3,
light: false,
trial: false,
rights: 1,
buildVersion: "5.2.6",
buildNumber: 5,
branding: false
}
};
var channel;
require([
'/common/outer/worker-channel.js',
'/common/common-util.js'
], function (Channel, Util) {
var msgEv = Util.mkEvent();
var p = window.parent;
window.addEventListener('message', function (msg) {
if (msg.source !== p) { return; }
msgEv.fire(msg);
});
var postMsg = function (data) {
p.postMessage(data, '*');
};
Channel.create(msgEv, postMsg, function (chan) {
channel = chan;
send(license);
chan.on('CMD', function (obj) {
send(obj);
});
});
});
sockjs.onopen = function() {
t._state = ConnectionState.WaitAuth;
t.onFirstConnect();
};
sockjs.onopen();
sockjs.close = function () {
console.error('Close realtime');
};
sockjs.send = function (data) {
console.log(data);
try {
var obj = JSON.parse(data);
} catch (e) {
console.error(e);
return;
}
if (channel) {
channel.event('CMD', obj);
}
};
sockjs.onmessage = function (e) {
t._onServerMessage(e.data);
};
return sockjs;
};
return sockjs;
};
DocsCoApi.prototype._onServerOpen = function () {
if (this.reconnectTimeout) {