mirror of
https://github.com/MichMich/MagicMirror.git
synced 2025-09-02 03:02:19 +00:00
socket.io times out and closes the client side socket without any callback sendSocntNotification() from the server side data is lost as the socket is closed. but the client doesn't know increase the timeout fixes #3380
47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
/* global io */
|
|
|
|
const MMSocket = function (moduleName) {
|
|
if (typeof moduleName !== "string") {
|
|
throw new Error("Please set the module name for the MMSocket.");
|
|
}
|
|
|
|
this.moduleName = moduleName;
|
|
|
|
// Private Methods
|
|
let base = "/";
|
|
if (typeof config !== "undefined" && typeof config.basePath !== "undefined") {
|
|
base = config.basePath;
|
|
}
|
|
this.socket = io(`/${this.moduleName}`, {
|
|
path: `${base}socket.io`,
|
|
pingInterval: 120000, // send pings every 2 mins
|
|
pingTimeout: 120000 // wait up to 2 mins for a pong
|
|
});
|
|
|
|
let notificationCallback = function () {};
|
|
|
|
const onevent = this.socket.onevent;
|
|
this.socket.onevent = (packet) => {
|
|
const args = packet.data || [];
|
|
onevent.call(this.socket, packet); // original call
|
|
packet.data = ["*"].concat(args);
|
|
onevent.call(this.socket, packet); // additional call to catch-all
|
|
};
|
|
|
|
// register catch all.
|
|
this.socket.on("*", (notification, payload) => {
|
|
if (notification !== "*") {
|
|
notificationCallback(notification, payload);
|
|
}
|
|
});
|
|
|
|
// Public Methods
|
|
this.setNotificationCallback = (callback) => {
|
|
notificationCallback = callback;
|
|
};
|
|
|
|
this.sendNotification = (notification, payload = {}) => {
|
|
this.socket.emit(notification, payload);
|
|
};
|
|
};
|