mirror of
https://github.com/MichMich/MagicMirror.git
synced 2025-06-27 03:39:55 +00:00
116 lines
2.9 KiB
JavaScript
116 lines
2.9 KiB
JavaScript
/* Magic Mirror
|
|
* Node Helper Superclass
|
|
*
|
|
* By Michael Teeuw http://michaelteeuw.nl
|
|
* MIT Licensed.
|
|
*/
|
|
|
|
var Class = require("../../../js/class.js");
|
|
var express = require("express");
|
|
var path = require("path");
|
|
|
|
NodeHelper = Class.extend({
|
|
init: function() {
|
|
console.log("Initializing new module helper ...");
|
|
},
|
|
|
|
loaded: function(callback) {
|
|
console.log("Module helper loaded: " + this.name);
|
|
callback();
|
|
},
|
|
|
|
start: function() {
|
|
console.log("Starting module helper: " + this.name);
|
|
},
|
|
|
|
/* socketNotificationReceived(notification, payload)
|
|
* This method is called when a socket notification arrives.
|
|
*
|
|
* argument notification string - The identifier of the notification.
|
|
* argument payload mixed - The payload of the notification.
|
|
*/
|
|
socketNotificationReceived: function(notification, payload) {
|
|
console.log(this.name + " received a socket notification: " + notification + " - Payload: " + payload);
|
|
},
|
|
|
|
/* setName(name)
|
|
* Set the module name.
|
|
*
|
|
* argument name string - Module name.
|
|
*/
|
|
setName: function(name) {
|
|
this.name = name;
|
|
},
|
|
|
|
/* setPath(path)
|
|
* Set the module path.
|
|
*
|
|
* argument path string - Module path.
|
|
*/
|
|
setPath: function(path) {
|
|
this.path = path;
|
|
},
|
|
|
|
/* sendSocketNotification(notification, payload)
|
|
* Send a socket notification to the node helper.
|
|
*
|
|
* argument notification string - The identifier of the notification.
|
|
* argument payload mixed - The payload of the notification.
|
|
*/
|
|
sendSocketNotification: function(notification, payload) {
|
|
this.io.of(this.name).emit(notification, payload);
|
|
},
|
|
|
|
/* setExpressApp(app)
|
|
* Sets the express app object for this module.
|
|
* This allows you to host files from the created webserver.
|
|
*
|
|
* argument app Express app - The Express app object.
|
|
*/
|
|
setExpressApp: function(app) {
|
|
this.expressApp = app;
|
|
|
|
var publicPath = this.path + "/public";
|
|
app.use("/" + this.name, express.static(publicPath));
|
|
},
|
|
|
|
/* setSocketIO(io)
|
|
* Sets the socket io object for this module.
|
|
* Binds message receiver.
|
|
*
|
|
* argument io Socket.io - The Socket io object.
|
|
*/
|
|
setSocketIO: function(io) {
|
|
var self = this;
|
|
self.io = io;
|
|
|
|
console.log("Connecting socket for: " + this.name);
|
|
var namespace = this.name;
|
|
io.of(namespace).on("connection", function(socket) {
|
|
// add a catch all event.
|
|
var onevent = socket.onevent;
|
|
socket.onevent = function(packet) {
|
|
var args = packet.data || [];
|
|
onevent.call(this, packet); // original call
|
|
packet.data = ["*"].concat(args);
|
|
onevent.call(this, packet); // additional call to catch-all
|
|
};
|
|
|
|
// register catch all.
|
|
socket.on("*", function(notification, payload) {
|
|
if (notification !== "*") {
|
|
//console.log('received message in namespace: ' + namespace);
|
|
self.socketNotificationReceived(notification, payload);
|
|
}
|
|
});
|
|
});
|
|
|
|
}
|
|
});
|
|
|
|
NodeHelper.create = function(moduleDefinition) {
|
|
return NodeHelper.extend(moduleDefinition);
|
|
};
|
|
|
|
module.exports = NodeHelper;
|