Sätt att få aktiva meddelanden till en Mac-applikation

Nu när du förstår om aktiva meddelanden och hur de fungerar kommer den här andra handledningen att visa dig hur du använder den kunskapen. Jag visar två sätt att arbeta med aktiva meddelanden med hjälp av a Node.js server. Samma tillvägagångssätt kan enkelt tillämpas på andra servertyper.

Aktiva meddelanden Använda DDNS

Nedladdningsfilen för denna handledning innehåller koden för en liten, Express.js webbserver som kan köras på en Virtual Private Server eller VPS. Jag har ett konto med FilpHost som jag använder för mina Anpassade datortillbehör hemsida. Ladda bara upp dessa filer till en VPS, installera Node.js, och kör ett kommando i katalogen:

npm installera

Detta installerar alla nödvändiga bibliotek för Express.js och Mops mallmotor. De flesta av filerna i den här katalogen stödjer filer för servern. Stödfilerna visar en webbsida med en enda knapp. Om du klickar på knappen skickas ett meddelande till servern för att pinga min hemdator. De viktigaste filerna av intresse är de två typerna av serverfiler: freeddns-Router.js och lokala-Router.js.

Serverns fil för att hänvisa till hemdatorn genom a DDNS, freeddns-Router.js, innehåller den här koden:

// // Ladda de bibliotek som används. // var express = kräver ("express"); var http = kräver ("http"); // // Konfigurera applikationsvariablerna. // var app = express (); var port = 3030; var data = title: "Huvudsidan för meddelandeserver", app: "Notification Server"; var homeComputer = "http://customct.freeddns.org:4490/action.html?macro=998C71BC-00CE-42B1-9478-306AA747A86A&value=Notice+from+"; // // Ange Express-rutterna. // app.use (express.static ("static")); app.set ("views", "./views") app.set ("view engine", "pug") // // Hantera startsidan. Detta ger klienten // en knapp för att trycka på för att skicka en anmälan. Detta // gör PEG-mallen i katalogen "views" //. // app.get ("/", funktion (req, res) res.render ("index", data);); // // Hantera begäran från klienten för att skicka // hemdatorn en anmälan. // app.get ("/ api / notifyOwner", funktion (req, res) // // Snabbt svara på klienten. // res.send ("okay"); // // Hämta IP för klient. // var ip = req.ip || req.connection.remote; ip = ip.split (":") [3]; // // Skicka klientens IP till hemdatorn med // Keyboard Maestro " s webgränssnitt. // http.get (homeComputer + ip, (res) => console.log ('Fick svar: $ res.statusCode'); // konsumera svaret body res.resume ();) .on ("error", (e) => console.log ('Fick fel: $ e.message';;);; // // Börja servern lyssnar på den angivna http-porten. // app.listen (port, funktion () console.log ("Notification Server listening on port" + port + "!"););

Du måste redigera linje 16 för att matcha din specifika DDNS inrätta. Linjerna 35-62 definierar vägen / Api / notifyOwner att klientens webbläsare ringer för att skicka en anmälan till hemdatorn.

Länken för hemdatorn, i homeComputer variabel, samtal port 4490 på domännamnet för hemdatorn. Detta är standardportinställningen för Keyboard Maestros personliga webbserver

Resten av länken, /action.html?macro=998C71BC-00CE-42B1-9478-306AA747A86A&value=Notice+from+, får action.html sida på servern för Keyboard Maestro med variablerna makro och värde. De makro variabel innehåller den unika identifieringskoden för makroen i Keyboard Maestro

De värde variabel innehåller vad du vill skicka till det makro som är URL-kodad. Informationen i värde variabel finns i % TriggerValue% variabel för Keyboard Maestro skript att använda.

Keyboard Maestro Macro för att ta emot meddelanden

Installera nu Keyboard Maestro makro som finns i hämtningsfilen för den här handledningen. Detta makro kommer att visa % TriggerValue% till användaren. Serverns kod skickar IP av klienten som tryckte på knappen på webbplatsen.

Tangentbord Maestro Inställningar: Webserver

Öppna sedan Keyboard Maestro inställningar och klicka på Webbserver alternativet på toppen. Ställ in alternativen till följande värden: Webserver aktiverad kontrollerade, HTTP-porten satt till 4490, och Webbläsaråtkomst aktiverad kontrollerade.

Keyboard Maestros webbserver

Om du öppnar din webbläsare till http: // localhost: 4490, du kommer att se Tangentbord Maestos webbserver sida. Om det makro du laddade från nedladdningen är det enda makro du har som utlöser från webbservern kommer det att dyka upp i Offentlig makro lista. 

Om den inte visas klickar du på rullgardinsmenyn och väljer Testa makro. Typ Detta är ett prov i Värde område och tryck på Kör knapp.

Keyboard Maestros webbserver: Makro exekverad

Du får se meddelandet som visas med texten Testning: Detta är ett test. Länken som nu visas i adressfältet i webbläsaren ska ha samma makro värdet som länken i serverns skript på rad 16. Om inte, ändra skriptet för att matcha det här värdet.

Testa på VPS

När du har laddat upp serverns programvara, installerade bibliotek, redigeringar gjorda till serverns program och Keyboard Maestro makrobelastad och installation, kan du sedan testa. 

För att starta servern på din VPS, skriv följande:

node freeddns-Router.js

Navigera sedan till serverns adress i port 3030.

Anmälningsserverens huvudsida

Du borde se den minsta minsta webbsidan med knappen för att trycka på för att skicka meddelandet.

Anmälningsserver med skickade meddelanden

När du trycker på lägga märke till knappen ska du få varningsdialogrutan att berätta för servern att du fått meddelandet okej. Sedan Skärmtext varsel från Keyboard Maestro ska visa IP adress för den klient som skickade meddelandet. 

Eftersom jag bor i Thailand och min VPS är i USA, gick meddelandet från min webbläsare i Thailand till VPS i USA, och sedan tillbaka till mitt system i Thailand inom en minut.

Rulla dina egna aktiva meddelanden

Om du inte vill använda a DDNS, Du kan skapa din egen version med din server. De lokala-Router.js filen är exakt samma router kod som freeddns-Router.js, men har en ny väg: / Api / homecomputer

Det har också en ny global variabel homeComputerIP som lagrar IP-adressen till det system som kallar det.

// // Ladda de bibliotek som används. // var express = kräver ("express"); var http = kräver ("http"); // // Konfigurera applikationsvariablerna. // var app = express (); var port = 3030; var data = title: "Huvudsidan för meddelandeserver", app: "Notification Server"; var homeComputerPortLink = ": 4490 / action.html? macro = 998C71BC-00CE-42B1-9478-306AA747A86A & värde = Meddelande + från +"; var homeComputerIP = ""; // // Ange Express-rutterna. // app.use (express.static ("static")); app.set ("views", "./views") app.set ("view engine", "pug") // // Hantera startsidan. Detta ger klienten // en knapp för att trycka på för att skicka en anmälan. Detta // gör PEG-mallen i katalogen "views" //. // app.get ("/", funktion (req, res) res.render ("index", data);); // // Hantera begäran från klienten för att skicka // hemdatorn en anmälan. // app.get ("/ api / notifyOwner", funktion (req, res) // // Snabbt svara på klienten. // res.send ("okay"); // // Hämta IP för klient. // var ip = req.ip || req.connection.remote; ip = ip.split (":") [3]; // // Skicka klientens IP till hemdatorn med // Keyboard Maestro " s webbgränssnitt. // http.get ("http: //" + homeComputerIP + homeComputerPortLink + ip, (res) => console.log ('Fick svar: $ res.statusCode'); // konsumera svar kroppsresenär ();). på ("fel", (e) => console.log ("Fick fel: $ e.message '););); app.get / api / homecomputer ", funktion (req, res) // // Snabbt svara på klienten. // res.send (" okay "); // // Hämta klientens IP. // homeComputerIP = req .ip || req.connection.remote; homeComputerIP = homeComputerIP.split (":") [3]; console.log ("Hemdator IP är" + homeComputerIP);); // // Starta servern att lyssna på http-porten anges. // app.listen (port, funktion () console.log ("Notification Server listening on port" + port + "!"););

Linjerna 65-77 hanterar den här nya rutten. När du öppnar den rutten i din webbläsare kommer du att få tillbaka en vanlig text Okej. Men servern sparar din IP-adress och använder den som IP-adress för att skicka meddelandet. 

Detta skär ut DDNS mellanhand och skickar bara meddelandet direkt till din dator.

För att köra den här servern skriver du följande rad:

nod lokal-Router.js

För att detta ska fungera bra måste du antingen gå till adressen för att ställa in IP-adressen varje gång du ansluter till internet, eller kör en bakgrundsuppgift som gör det för dig. 

Medurs är en bra applikation för att skapa skript som regelbundet körs. jag har en Medursvisning, på Envato Tuts +, som du kanske vill konsultera.

Tangentbord Maestro Macro för periodiskt inställning av IP-adress på server

Nedladdningsfilen har också ovanstående Keyboard Maestro makro för att periodiskt ringa servern för att ställa in IP-adressen. 

Eftersom Keyboard Maestro har ingen Internet-återställningsutlösare, en periodisk utlösare är nästa bästa sak. Du måste ändra skriptet för att referera till din VPS.

säkerhet

Eftersom denna handledning handlar om att få en aktiv anmälan till din lokala dator, har jag inte lagt till något för att adressera säkerhet. Dessa små servrar är för närvarande osäkra. 

Om du använder dessa i naturen, föreslår jag starkt att du skapar någon typ av säkerhet för identifiering av klienten som anger IP-adressen. 

Du kan skapa ett lösenordssystem eller ett token-passningssystem som är säkert, men dessa idéer ligger utanför ramen för denna handledning.

Slutsats

Nu när du vet hur aktiva meddelanden fungerar, skapa ditt eget system. Idéerna här är lätt översatta till PHP, Rubin, eller Pytonorm. Du kan också expandera Keyboard Maestro makro för att behandla inkommande information. 

Jag har det setup för att ringa en Alfred arbetsflöde för att räkna besök på min hemsida. Du kan använda detta för att meddela om någon behöver hjälp på en webbplats också. Möjligheterna begränsas bara av din fantasi.