Manieren om actieve meldingen naar een Mac-applicatie te krijgen

Nu u begrijpt wat actieve meldingen zijn en hoe ze werken, laat deze tweede zelfstudie u zien hoe u die kennis kunt toepassen. Ik toon twee manieren om met actieve meldingen te werken met een Node.js server. Deze zelfde aanpak kan eenvoudig worden toegepast op andere servertypen.

Actieve meldingen met behulp van de DDNS

Het downloadbestand voor deze zelfstudie bevat de code voor een kleine, Express.js webserver die kan worden uitgevoerd op een Virtual Private Server of VPS. Ik heb een account bij FilpHost die ik gebruik voor mijn Aangepaste computerhulpmiddelen website. Upload deze bestanden naar een VPS, installeer Node.js, en voer een commando uit in de directory:

npm installeren

Hiermee installeert u alle benodigde bibliotheken voor Express.js en mopshond sjabloon motor. De meeste bestanden in deze map ondersteunen bestanden voor de server. De ondersteuningsbestanden geven een webpagina weer die één knop heeft. Als u op de knop klikt, verzendt u een melding naar de server om mijn thuiscomputer te pingen. De belangrijkste bestanden van interesse zijn de twee soorten serverbestanden: freeddns-Router.js en local-Router.js.

Het serverbestand voor verwijzing naar de thuiscomputer via een DDNS, freeddns-Router.js, bevat deze code:

// // Laad de gebruikte bibliotheken. // var express = require ("express"); var http = require ("http"); // // Stel de applicaiton-variabelen in. // var app = express (); var-poort = 3030; var data = title: "Notification Server Main Page", app: "Notification Server"; var homeComputer = "http://customct.freeddns.org:4490/action.html?macro=998C71BC-00CE-42B1-9478-306AA747A86A&value=Notice+from+"; // // Stel de Express-routes in. // app.use (express.static ("static")); app.set ("views", "./views") app.set ("view engine", "pug") // // Omgaan met de startpagina. Dit geeft de client // een knop om op te drukken om een ​​melding te verzenden. Deze // geeft de PEG-sjabloon weer in de map "views" //. // app.get ("/", functie (req, res) res.render ("index", data);); // // Behandel de aanvraag van de client om // de thuiscomputer een melding te sturen. // app.get ("/ api / notifyOwner", functie (req, res) // // Reageer snel op de client. // res.send ("oke"); // // download de IP van de client. // var ip = req.ip || req.connection.remote; ip = ip.split (":") [3]; // // Stuur het client-IP naar de thuiscomputer met // Keyboard Maestro " s Web-interface. // http.get (homeComputer + ip, (res) => console.log ('Antwoord gekregen: $ res.statusCode'); // consumeren antwoordtekst res.reume ();) .on ("error", (e) => console.log ('Got error: $ e.message'););); // // Start de server luisterend naar de opgegeven http-poort. // app.listen (poort, functie () console.log ("Melding Server luisteren op poort '+ poort +"! "););

Je moet regel 16 aanpassen aan je specifieke DDNS opstelling. Regel 35-62 bepaalt de route / Api / notifyOwner die de browser van de client zal bellen om een ​​melding naar de thuiscomputer te sturen.

De link voor de thuiscomputer, in de thuis computer variabele, belt poort 4490 op de domeinnaam voor de thuiscomputer. Dit is de standaard poortinstelling voor Toetsenbord Maestro's persoonlijke webserver

De rest van de link, /action.html?macro=998C71BC-00CE-42B1-9478-306AA747A86A&value=Notice+from+, krijgt de action.html pagina op de server voor Keyboard Maestro met de variabelen macro en waarde. De macro variabele bevat de unieke identificatiecode voor de macro in Keyboard Maestro

De waarde variabele bevat alles wat u naar de macro wilt verzenden URL gecodeerd. De informatie in de waarde variabele is in de % TriggerValue% variabele voor de Keyboard Maestro script om te gebruiken.

Keyboard Maestro Macro voor het ontvangen van meldingen

Installeer nu de Keyboard Maestro macro die in het downloadbestand voor deze zelfstudie staat. Deze macro geeft de % TriggerValue% voor de gebruiker. De servercode verzendt de IK P van de klant die op de knop op de website drukte.

Voorkeuren voor toetsenbordmaestro: webserver

Open vervolgens de Keyboard Maestro voorkeuren en klik op de Web Server optie bovenaan. Stel de opties in op de volgende waarden: Webserver ingeschakeld gecontroleerd, HTTP-poort ingesteld op 4490, en Toegang via webbrowser ingeschakeld gecontroleerd.

Toetsenbord Maestro's webserver

Als u uw webbrowser opent voor http: // localhost: 4490, je zal het zien Toetsenbord Maestowebserverpagina. Als de macro die u in de download hebt geladen de enige macro is die u vanaf de webserver activeert, wordt deze weergegeven in de Publieke macro lijst. 

Als het niet wordt weergegeven, klikt u op het vervolgkeuzemenu en selecteert u het Test macro. Type Dit is een test in de Waarde gebied en druk op de uitvoeren knop.

Toetsenbord Maestro's webserver: macro uitgevoerd

Je ziet de melding bij de tekst verschijnen Testen: dit is een test. De link die nu in de adresbalk van de browser wordt weergegeven, moet hetzelfde zijn macro waarde als de link in het serverscript op regel 16. Als dit niet het geval is, wijzigt u het script zodat dit overeenkomt met deze waarde.

Testen op het VPS

Nadat u de serversoftware hebt geüpload, bibliotheken hebt geïnstalleerd, bewerkingen in het serverprogramma hebt uitgevoerd en de Keyboard Maestro macro geladen en ingesteld, kunt u vervolgens testen. 

Om de server op uw te starten VPS, typ het volgende:

knooppunt freeddns-Router.js

Navigeer vervolgens naar het adres van de server in poort 3030.

De belangrijkste pagina van de meldingsserver

U zou de minimale webpagina moeten zien met de knop om in te drukken voor het verzenden van de melding.

Meldingsserver met verzonden notificatie

Wanneer u op drukt merk op knop, zou u het waarschuwingsdialoogvenster moeten krijgen met de mededeling dat de server de kennisgeving heeft ontvangen oke. Dan de Displaytekst bericht van Keyboard Maestro moet de IK P adres van de klant die de melding heeft verzonden. 

Sinds ik woon in Thailand en mijn VPS is in de Verenigde Staten, het bericht ging van mijn browser in Thailand, naar de VPS in de Verenigde Staten en vervolgens binnen een minuut terug naar mijn systeem in Thailand.

'Roll Your Own' actieve meldingen

Als u geen a wilt gebruiken DDNS, u kunt uw eigen versie samenstellen met uw server. De local-Router.js bestand is exact dezelfde routercode als freeddns-Router.js, maar heeft een nieuwe route: / Api / homecomputer

Het heeft ook een nieuwe globale variabele homeComputerIP die het IP-adres van het systeem dat het oproept opslaat.

// // Laad de gebruikte bibliotheken. // var express = require ("express"); var http = require ("http"); // // Stel de applicaiton-variabelen in. // var app = express (); var-poort = 3030; var data = title: "Notification Server Main Page", app: "Notification Server"; var homeComputerPortLink = ": 4490 / action.html? macro = 998C71BC-00CE-42B1-9478-306AA747A86A & value = Notice + from +"; var homeComputerIP = ""; // // Stel de Express-routes in. // app.use (express.static ("static")); app.set ("views", "./views") app.set ("view engine", "pug") // // Omgaan met de startpagina. Dit geeft de client // een knop om op te drukken om een ​​melding te verzenden. Deze // geeft de PEG-sjabloon weer in de map "views" //. // app.get ("/", functie (req, res) res.render ("index", data);); // // Behandel de aanvraag van de client om // de thuiscomputer een melding te sturen. // app.get ("/ api / notifyOwner", functie (req, res) // // Reageer snel op de client. // res.send ("oke"); // // download de IP van de client. // var ip = req.ip || req.connection.remote; ip = ip.split (":") [3]; // // Stuur het client-IP naar de thuiscomputer met // Keyboard Maestro " s Webinterface // http.get ("http: //" + homeComputerIP + homeComputerPortLink + ip, (res) => console.log ('Antwoord gekregen: $ res.statusCode'); // reactie consumeren body res.resume ();). on ("error", (e) => console.log ('Got error: $ e.message'););); app.get (" / api / homecomputer ", functie (req, res) // // Reageer snel op de client. // res.send (" oke "); // // Download het IP-adres van de client. // homeComputerIP = verplicht .ip || req.connection.remote; homeComputerIP = homeComputerIP.split (":") [3]; console.log ("Home computer IP is" + home ComputercomputersIP);); // // Start de server om te luisteren naar de opgegeven http-poort. // app.listen (poort, functie () console.log ("Melding Server luisteren op poort '+ poort +"! "););

Regel 65-77 beheert deze nieuwe route. Wanneer u die route in uw webbrowser opent, krijgt u een onbewerkte tekst terug oke. Maar de server slaat uw IP-adres op en gebruikt het als het IP-adres om de melding te verzenden. 

Dit snijdt de DDNS tussenpersoon en stuurt de melding gewoon rechtstreeks naar uw computer.

Typ de volgende regel om deze server uit te voeren:

knoop lokaal-Router.js

Om dit goed te laten werken, moet je ofwel naar het adres gaan om het IP-adres in te stellen elke keer dat je verbinding maakt met internet, of een achtergrondtaak uitvoeren die dat voor je doet. 

Met de klok mee is een geweldige applicatie voor het maken van scripts die periodiek worden uitgevoerd. ik heb een Rechtsdraaiend met de klok mee, op Envato Tuts +, die u misschien wilt raadplegen.

Keyboard Maestro Macro voor het periodiek instellen van het IP-adres op de server

Het downloadbestand heeft ook het bovenstaande Keyboard Maestro macro voor het periodiek oproepen van de server om het IP-adres in te stellen. 

Sinds Keyboard Maestro heeft geen internet reset-trigger, een periodieke trigger is het volgende beste. U zult het script moeten aanpassen om naar uw referentie te verwijzen VPS.

Veiligheid

Aangezien deze zelfstudie gaat over het krijgen van een actieve melding op uw lokale computer, heb ik niets toegevoegd aan adresbeveiliging. Deze kleine servers zijn momenteel onveilig. 

Als u deze in het wild gebruikt, raad ik u ten sterkste aan om een ​​soort beveiliging te maken voor identificatie van de client die het IP-adres instelt. 

U kunt een wachtwoordsysteem of tokenpassagesysteem maken dat beveiligd is, maar deze ideeën vallen buiten het bestek van deze zelfstudie.

Conclusie

Nu u weet hoe actieve meldingen werken, maakt u uw eigen systeem. De ideeën hier zijn eenvoudig te vertalen naar PHP, Robijn, of Python. Je kunt ook het Keyboard Maestro macro om de inkomende informatie te verwerken. 

Ik heb het ingesteld om een ​​te bellen Alfred workflow om bezoeken aan mijn website te tellen. U kunt dit gebruiken om te melden of iemand ook hulp nodig heeft op een website. De mogelijkheden worden alleen begrensd door je verbeelding.