mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-11-09 00:03:18 -05:00
The port changes when the reload server is restarted in any case, so no point trying to reconnect if the server has gone away.
46 lines
1.4 KiB
JavaScript
46 lines
1.4 KiB
JavaScript
/* vim:fileencoding=utf-8
|
|
*
|
|
* Copyright (C) 2015 Kovid Goyal <kovid at kovidgoyal.net>
|
|
*
|
|
* Distributed under terms of the GPLv3 license
|
|
*/
|
|
|
|
(function(autoreload_port) {
|
|
"use strict;";
|
|
var url = 'ws://127.0.0.1:' + autoreload_port;
|
|
var MAX_RETRIES = 10;
|
|
|
|
function ReconnectingWebSocket() {
|
|
self = this;
|
|
self.retries = 0;
|
|
self.interval = 100;
|
|
|
|
self.reconnect = function() {
|
|
self.ws = new WebSocket(url);
|
|
|
|
self.ws.onopen = function(event) {
|
|
self.retries = 0;
|
|
self.interval = 100;
|
|
console.log('Connected to reloading WebSocket server at port: ' + autoreload_port);
|
|
};
|
|
|
|
self.ws.onmessage = function(event) {
|
|
console.log('Received mesasge from reload server: ' + event.data);
|
|
if (event.data === 'reload') window.location.reload(true);
|
|
};
|
|
|
|
self.ws.onclose = function(event) {
|
|
console.log('Connection to reload server closed with code: ' + event.code + ' and reason: ' + event.reason);
|
|
self.retries += 1;
|
|
if (self.retries < MAX_RETRIES) {
|
|
setTimeout(self.reconnect, self.interval);
|
|
} else window.location.reload(true);
|
|
};
|
|
};
|
|
self.reconnect();
|
|
}
|
|
|
|
var sock = new ReconnectingWebSocket();
|
|
})(AUTORELOAD_PORT);
|
|
|