mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-12-26 01:50:28 +00:00
17b4f53ba2
* Create server-sent-events.js * Create sse-change-listener.js * Implement server sent events * Convert to ES5 and wrap in function * Use the host string from tiddlyweb * Improve comments in sse-server.js * Can't use object reference as key * Add retry timeout * Fix a bug * bug fix * Fix formatting * Fix ES5 compat * capitalize comments * more fixes * Refactor tiddlywek/sse-server.js * Extract helper functions for handling wikis and connections. * Replace JSDoc comments. * Fix formatting according to TW core. * Simplify the logic for adding and removing connections. * Fix formatting of tiddlyweb/sse-client.js Fix formatting according to TW core. * Fix formatting of server-sent-events.js Fix formatting and comments following TW core guidelines. * Extract a debounce function in sse-client.js * Avoid using startsWith in server-sent-events.js startsWith is part of ES2015, while TiddlyWiki uses the 5.1 dialect. * New sse-enabled WebServer parameter * If not set to "yes", disabled SSE request handling. * Add documentation for the parameter in core/language/en-GB/Help/listen.tid * Add new tiddler editions/tw5.com/tiddlers/webserver/WebServer Parameter_ sse-enabled.tid * Disable polling for changes if SSE is enabled * Add sse_enabled to /status JSON response * Store syncer polling status in $:/config/SyncDisablePolling * Handled disabling polling in core/modules/syncer.js * Simply boolean logic in syncer.js * Delete trailing whitespaces in syncer.js Co-authored-by: Arlen22 <arlenbee@gmail.com>
54 lines
1.3 KiB
JavaScript
54 lines
1.3 KiB
JavaScript
/*\
|
|
title: $:/plugins/tiddlywiki/tiddlyweb/sse-client.js
|
|
type: application/javascript
|
|
module-type: startup
|
|
|
|
GET /recipes/default/tiddlers/:title
|
|
|
|
\*/
|
|
(function(){
|
|
|
|
/*jslint node: true, browser: true */
|
|
/*global $tw: false */
|
|
"use strict";
|
|
|
|
exports.name = "/events/plugins/tiddlywiki/tiddlyweb";
|
|
exports.after = ["startup"];
|
|
exports.synchronous = true;
|
|
exports.platforms = ["browser"];
|
|
exports.startup = function() {
|
|
// Make sure we're actually being used
|
|
if($tw.syncadaptor.name !== "tiddlyweb") {
|
|
return;
|
|
}
|
|
// Get the mount point in case a path prefix is used
|
|
var host = $tw.syncadaptor.getHost();
|
|
// Make sure it ends with a slash (it usually does)
|
|
if(host[host.length - 1] !== "/") {
|
|
host += "/";
|
|
}
|
|
// Setup the event listener
|
|
setupEvents(host);
|
|
};
|
|
|
|
function debounce(callback) {
|
|
var timeout = null;
|
|
return function() {
|
|
clearTimeout(timeout);
|
|
timeout = setTimeout(callback,$tw.syncer.throttleInterval);
|
|
};
|
|
}
|
|
|
|
function setupEvents(host) {
|
|
var events = new EventSource(host + "events/plugins/tiddlywiki/tiddlyweb");
|
|
var debouncedSync = debounce($tw.syncer.syncFromServer.bind($tw.syncer));
|
|
events.addEventListener("change",debouncedSync);
|
|
events.onerror = function() {
|
|
events.close();
|
|
setTimeout(function() {
|
|
setupEvents(host);
|
|
},$tw.syncer.errorRetryInterval);
|
|
};
|
|
}
|
|
})();
|