Méthodes pour obtenir des notifications actives dans une application Mac

Maintenant que vous comprenez les notifications actives et leur fonctionnement, ce deuxième tutoriel vous montrera comment appliquer ces connaissances. Je vais montrer deux façons de travailler avec des notifications actives en utilisant un Node.js serveur. Cette même approche peut facilement être appliquée à d'autres types de serveurs.

Notifications actives utilisant le DDNS

Le fichier de téléchargement de ce tutoriel contient le code d’un petit, Express.js serveur Web qui peut être exécuté sur un Serveur privé virtuel ou VPS. J'ai un compte avec FilpHost que j'utilise pour mon Outils informatiques personnalisés site Internet. Il suffit de télécharger ces fichiers sur un VPS, d’installer Node.js, et lancez une commande dans le répertoire:

npm installer

Ceci installera toutes les bibliothèques nécessaires pour Express.js et Carlin moteur de template. La plupart des fichiers de ce répertoire sont des fichiers de support pour le serveur. Les fichiers de support affichent une page Web comportant un seul bouton. En cliquant sur le bouton, une notification sera envoyée au serveur pour qu'il envoie une requête ping à mon ordinateur personnel. Les principaux fichiers d’intérêt sont les deux types de fichiers serveur: freeddns-Router.js et local-Router.js.

Le fichier serveur permettant de faire référence à l’ordinateur domestique via un DDNS, freeddns-Router.js, contient ce code:

// // Charge les bibliothèques utilisées. // var express = require ("express"); var http = require ("http"); // // Configure les variables d'application. // var app = express (); port var = 3030; var data = title: "Page principale du serveur de notifications", app: "Notification Server"; var homeComputer = "http://customct.freeddns.org:4490/action.html?macro=998C71BC-00CE-42B1-9478-306AA747A86A&value=Notice+from+"; // // Configurez les itinéraires Express. // app.use (express.static ("static")); app.set ("vues", "./views") app.set ("moteur de visualisation", "pug") // // Gère la page d'accueil. Ceci donne au client // un bouton sur lequel appuyer pour envoyer une notification. Ceci // rendra le modèle PEG dans le répertoire "views" //. // app.get ("/", fonction (req, res) res.render ("index", data);); // // Traite la demande du client d'envoyer // une notification à l'ordinateur domestique. // app.get ("/ api / notifyOwner", function (req, res) // // répond rapidement au client. // res.send ("okay"); // // récupère l'adresse IP du client. // var ip = req.ip || req.connection.remote; ip = ip.split (":") [3]; // // envoie l'adresse IP du client à l'ordinateur domestique à l'aide de // Keyboard Maestro " s Interface Web. // http.get (homeComputer + ip, (res) => console.log ('Réponse reçue: $ res.statusCode'); // consomme le corps de la réponse res.resume ();) .on ("error", (e) => console.log ('Une erreur est survenue: $ e.message'););); // // Démarrez le serveur en écoutant le port http spécifié. // app.listen (port, fonction () console.log ("Notification Server en écoute sur le port '+ port +"! "););

Vous aurez besoin de modifier la ligne 16 pour correspondre à votre DDNS installer. Les lignes 35 à 62 définissent l'itinéraire / api / notifyOwner que le navigateur du client appelle pour envoyer une notification à l'ordinateur domestique.

Le lien pour l’ordinateur domestique, dans le ordinateur de famille variable, appelle le port 4490 sur le nom de domaine de l’ordinateur domestique. Ceci est la configuration du port par défaut pour Serveur Web personnel de Keyboard Maestro

Le reste du lien, /action.html?macro=998C71BC-00CE-42B1-9478-306AA747A86A&value=Notice+from+, obtient le action.html page sur le serveur pour Clavier Maestro avec les variables macro et valeur. le macro La variable contient le code d'identification unique de la macro en Clavier Maestro

le valeur variable contient tout ce que vous voulez envoyer à la macro qui est URL encodée. Les informations dans le valeur la variable est dans le % TriggerValue% variable pour le Clavier Maestro script à utiliser.

Macro Maestro Keyboard pour recevoir des notifications

Maintenant, installez le Clavier Maestro macro qui est dans le fichier de téléchargement pour ce tutoriel. Cette macro affichera le % TriggerValue% à l'utilisateur. Le code du serveur envoie le IP du client qui a appuyé sur le bouton sur le site web.

Préférences du clavier Maestro: serveur Web

Ensuite, ouvrez le Clavier Maestro préférences et cliquez sur le Serveur Web option en haut. Définissez les options sur les valeurs suivantes: Serveur Web activé vérifié, Port HTTP réglé sur 4490, et Accès au navigateur Web activé vérifié.

Serveur Web du clavier Maestro

Si vous ouvrez votre navigateur Web pour http: // localhost: 4490, vous verrez le Clavier Maestola page du serveur web de. Si la macro que vous avez chargée à partir du téléchargement est la seule macro que vous avez déclenchée à partir du serveur Web, elle apparaîtra dans Macro publique liste. 

S'il ne s'affiche pas, cliquez sur le menu déroulant et sélectionnez le Tester macro. Type C'est un test dans le Valeur zone et appuyez sur la Exécuter bouton.

Serveur Web du clavier Maestro: Macro exécuté

Vous verrez la notification affichée avec le texte Test: Ceci est un test. Le lien qui apparaît maintenant dans la barre d'adresse du navigateur devrait avoir le même macro valeur comme lien dans le script de serveur à la ligne 16. Sinon, changez le script pour qu'il corresponde à cette valeur.

Test sur le VPS

Une fois le logiciel serveur téléchargé, les bibliothèques installées, les modifications apportées au programme serveur et les Clavier Maestro macro chargée et configurée, vous pouvez alors tester. 

Pour démarrer le serveur sur votre VPS, tapez ce qui suit:

noeud freeddns-Router.js

Ensuite, accédez à l'adresse du serveur sur le port 3030..

Page principale de Notification Server

Vous devriez voir la page Web avec le bouton sur lequel appuyer pour envoyer la notification..

Notification Server avec Notification envoyée

Lorsque vous appuyez sur le remarquer bouton, vous devriez obtenir la boîte de dialogue d'alerte vous indiquant que le serveur a reçu la notification d'accord. Puis le Texte affiché avis de Clavier Maestro devrait montrer le IP adresse du client qui a envoyé la notification. 

Depuis que je vis en Thaïlande et mon VPS est aux États-Unis, le message est passé de mon navigateur en Thaïlande, au VPS aux États-Unis, puis de nouveau dans mon système en Thaïlande en une minute à peine.

'Roll Your Own' Notifications actives

Si vous ne voulez pas utiliser un DDNS, vous pouvez créer votre propre version avec votre serveur. le local-Router.js le fichier est exactement le même code de routeur que freeddns-Router.js, mais a une nouvelle route: / api / ordinateur de bureau

Il a aussi une nouvelle variable globale accueilOrdinateurIP qui stockera l'adresse IP du système qui l'appelle.

// // Charge les bibliothèques utilisées. // var express = require ("express"); var http = require ("http"); // // Configure les variables d'application. // var app = express (); port var = 3030; var data = title: "Page principale du serveur de notifications", app: "Notification Server"; var homeComputerPortLink = ": 4490 / action.html? macro = 998C71BC-00CE-42B1-9478-306AA747A86A & valeur = Avis + à partir de +"; var homeComputerIP = ""; // // Configurez les itinéraires Express. // app.use (express.static ("static")); app.set ("vues", "./views") app.set ("moteur de visualisation", "pug") // // Gère la page d'accueil. Ceci donne au client // un bouton sur lequel appuyer pour envoyer une notification. Ceci // rendra le modèle PEG dans le répertoire "views" //. // app.get ("/", fonction (req, res) res.render ("index", data);); // // Traite la demande du client d'envoyer // une notification à l'ordinateur domestique. // app.get ("/ api / notifyOwner", function (req, res) // // répond rapidement au client. // res.send ("okay"); // // récupère l'adresse IP du client. // var ip = req.ip || req.connection.remote; ip = ip.split (":") [3]; // // envoie l'adresse IP du client à l'ordinateur domestique à l'aide de // Keyboard Maestro " s Interface Web. // http.get ("http: //" + homeComputerIP + homeComputerPortLink + ip, (res) => console.log ('Réponse reçue: $ res.statusCode'); // consume la réponse body res.resume ();). on ("erreur", (e) => console.log ('Erreur: $ e.message'););); app.get (" / api / homecomputer ", function (req, res) // // Répondre rapidement au client. // res.send (" okay "); // // Obtenir l'adresse IP du client. // homeComputerIP = req .ip || req.connection.remote; homeComputerIP = homeComputerIP.split (":") [3]; console.log ("IP de l'ordinateur à la maison est" + homeComputerIP);); // // démarre l'écoute du serveur le port http spécifié. // app.listen (port, function () console.log ("Notification Server en écoute sur le port '+ port +"! "););

Les lignes 65 à 77 gèrent ce nouvel itinéraire. Lorsque vous ouvrez cette route dans votre navigateur Web, vous obtenez un texte brut d'accord. Mais, le serveur sauvegardera votre adresse IP et l’utilisera comme adresse IP pour envoyer la notification.. 

Cela coupe le DDNS intermédiaire et expédie simplement la notification directement sur votre ordinateur.

Pour exécuter ce serveur, tapez la ligne suivante:

noeud local-Router.js

Pour que cela fonctionne bien, vous devrez soit aller à l'adresse pour définir l'adresse IP chaque fois que vous vous connecterez à Internet, soit exécuter une tâche en arrière-plan qui le fera pour vous.. 

Dans le sens des aiguilles d'une montre est une excellente application pour créer des scripts à exécuter périodiquement. j'ai un Tutoriel dans le sens des aiguilles d'une montre, sur Envato Tuts +, que vous voudrez peut-être consulter.

Macro Maestro du clavier pour la définition périodique de l'adresse IP sur le serveur

Le fichier de téléchargement a également ce qui précède Clavier Maestro macro pour appeler périodiquement le serveur pour définir l'adresse IP. 

Puisque Clavier Maestro n’a pas de déclencheur de réinitialisation Internet, un déclencheur périodique est la meilleure chose à faire. Vous devrez modifier le script pour référencer votre VPS.

Sécurité

Étant donné que ce tutoriel concerne l’envoi d’une notification active à votre ordinateur local, je n’ai rien ajouté à la sécurité. Ces petits serveurs ne sont actuellement pas sécurisés. 

Si vous utilisez ceux-ci dans la nature, je suggère fortement de créer un type de sécurité pour l'identification du client qui définit l'adresse IP. 

Vous pouvez créer un système de mot de passe ou un système de transfert de jetons sécurisé, mais ces idées sortent du cadre de ce didacticiel..

Conclusion

Maintenant que vous savez comment fonctionnent les notifications actives, créez votre propre système. Les idées ici sont facilement traduites en PHP, Rubis, ou Python. Vous pouvez également développer la Clavier Maestro macro pour traiter les informations entrantes. 

Je l'ai configuré pour appeler un Alfred flux de travail pour compter les visites sur mon site. Vous pouvez également l'utiliser pour indiquer si une personne a également besoin d'aide sur un site Web. Les possibilités ne sont limitées que par votre imagination.