mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-20 10:15:17 -04:00
Added support of operational transformation
This commit is contained in:
parent
4702b83adc
commit
556338a9c6
23 changed files with 3668 additions and 256 deletions
66
public/vendor/ot/socketio-adapter.js
vendored
Executable file
66
public/vendor/ot/socketio-adapter.js
vendored
Executable file
|
@ -0,0 +1,66 @@
|
|||
/*global ot */
|
||||
|
||||
ot.SocketIOAdapter = (function () {
|
||||
'use strict';
|
||||
|
||||
function SocketIOAdapter(socket) {
|
||||
this.socket = socket;
|
||||
|
||||
var self = this;
|
||||
socket.on('client_left', function (clientId) {
|
||||
self.trigger('client_left', clientId);
|
||||
});
|
||||
socket.on('set_name', function (clientId, name) {
|
||||
self.trigger('set_name', clientId, name);
|
||||
});
|
||||
socket.on('set_color', function (clientId, color) {
|
||||
self.trigger('set_color', clientId, color);
|
||||
});
|
||||
socket.on('ack', function (revision) {
|
||||
self.trigger('ack', revision);
|
||||
});
|
||||
socket.on('operation', function (clientId, revision, operation, selection) {
|
||||
self.trigger('operation', revision, operation);
|
||||
self.trigger('selection', clientId, selection);
|
||||
});
|
||||
socket.on('operations', function (head, operations) {
|
||||
operations = LZString.decompressFromUTF16(operations);
|
||||
operations = JSON.parse(operations);
|
||||
self.trigger('operations', head, operations);
|
||||
});
|
||||
socket.on('selection', function (clientId, selection) {
|
||||
self.trigger('selection', clientId, selection);
|
||||
});
|
||||
socket.on('reconnect', function () {
|
||||
self.trigger('reconnect');
|
||||
});
|
||||
}
|
||||
|
||||
SocketIOAdapter.prototype.sendOperation = function (revision, operation, selection) {
|
||||
operation = LZString.compressToUTF16(JSON.stringify(operation));
|
||||
this.socket.emit('operation', revision, operation, selection);
|
||||
};
|
||||
|
||||
SocketIOAdapter.prototype.sendSelection = function (selection) {
|
||||
this.socket.emit('selection', selection);
|
||||
};
|
||||
|
||||
SocketIOAdapter.prototype.getOperations = function (base, head) {
|
||||
this.socket.emit('get_operations', base, head);
|
||||
};
|
||||
|
||||
SocketIOAdapter.prototype.registerCallbacks = function (cb) {
|
||||
this.callbacks = cb;
|
||||
};
|
||||
|
||||
SocketIOAdapter.prototype.trigger = function (event) {
|
||||
var args = Array.prototype.slice.call(arguments, 1);
|
||||
var action = this.callbacks && this.callbacks[event];
|
||||
if (action) {
|
||||
action.apply(this, args);
|
||||
}
|
||||
};
|
||||
|
||||
return SocketIOAdapter;
|
||||
|
||||
}());
|
Loading…
Add table
Add a link
Reference in a new issue