mirror of
https://github.com/MichMich/MagicMirror.git
synced 2025-06-27 11:50:00 +00:00
54 lines
1.3 KiB
JavaScript
54 lines
1.3 KiB
JavaScript
/* global io */
|
|
|
|
/* Magic Mirror
|
|
* TODO add description
|
|
*
|
|
* By Michael Teeuw https://michaelteeuw.nl
|
|
* MIT Licensed.
|
|
*/
|
|
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"
|
|
});
|
|
|
|
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) => {
|
|
if (typeof payload === "undefined") {
|
|
payload = {};
|
|
}
|
|
this.socket.emit(notification, payload);
|
|
};
|
|
};
|