Ahora que comprende las notificaciones activas y cómo funcionan, este segundo tutorial le mostrará cómo aplicar ese conocimiento. Mostraré dos formas de trabajar con notificaciones activas usando un Node.js servidor. Este mismo enfoque se puede aplicar fácilmente a otros tipos de servidores.
El archivo de descarga de este tutorial contiene el código para una pequeña, Expreso.js servidor web que se puede ejecutar en una Servidor Virtual Privado o VPS. Tengo una cuenta con FilpHost que uso para mi Herramientas informáticas personalizadas sitio web. Solo cargue estos archivos a un VPS, instale Node.js, y ejecute un comando en el directorio:
npm instalar
Esto instalará todas las librerías necesarias para Expreso.js y Doguillo plantilla de motor. La mayoría de los archivos en este directorio son archivos de soporte para el servidor. Los archivos de soporte muestran una página web que tiene un solo botón. Al hacer clic en el botón se enviará una notificación al servidor para hacer ping a la computadora de mi hogar. Los principales archivos de interés son los dos tipos de archivos de servidor: freeddns-Router.js y local-Router.js.
El archivo del servidor para referirse a la computadora del hogar a través de un DDNS, freeddns-Router.js, contiene este código:
// // Cargar las librerías utilizadas. // var express = require ("express"); var http = require ("http"); // // Configurar las variables de aplicación. // var app = express (); puerto var = 3030; var data = título: "Página principal de Notification Server", aplicación: "Notification Server"; var homeComputer = "http://customct.freeddns.org:4490/action.html?macro=998C71BC-00CE-42B1-9478-306AA747A86A&value=Notice+from+"; // // Configurar las rutas Express. // app.use (express.static ("static")); app.set ("views", "./views") app.set ("view engine", "pug") // // Manejar la página de inicio. Esto le da al cliente // un botón para presionar para enviar una notificación. Esto // representará la plantilla PEG en el directorio "views" //. // app.get ("/", function (req, res) res.render ("index", data);); // // Manejar la solicitud del cliente para enviar a // la computadora del hogar una notificación. // app.get ("/ api / notifyOwner", function (req, res) // // Responda rápidamente al cliente. // res.send ("okay"); // // Obtenga la IP del client. // var ip = req.ip || req.connection.remote; ip = ip.split (":") [3]; // // Envíe la IP del cliente a la computadora del hogar usando // Keyboard Maestro " s Interfaz web. // http.get (homeComputer + ip, (res) => console.log ('Got response: $ res.statusCode'); // consume el cuerpo de la respuesta res.resume ();) .on ("error", (e) => console.log ('Got error: $ e.message'););); // // Inicie el servidor escuchando el puerto http especificado. // app.listen (puerto, función () console.log ("Notification Server escuchando en el puerto '+ puerto +"! "););
Tendrá que editar la línea 16 para que coincida con su particular DDNS preparar. Las líneas 35-62 definen la ruta. / api / notificationPropietario
que el navegador del cliente llamará para enviar una notificación a la computadora del hogar.
El enlace para la computadora del hogar, en el computador de casa variable, llama al puerto 4490 en el nombre de dominio de la computadora del hogar. Esta es la configuración de puerto predeterminada para Servidor web personal del maestro del teclado.
El resto del enlace., /action.html?macro=998C71BC-00CE-42B1-9478-306AA747A86A&value=Notice+from+
, obtiene el action.html página en el servidor para Maestro de teclado con las variables macro y valor. los macro variable contiene el código de identificación único para la macro en Maestro de teclado.
los valor La variable contiene todo lo que desea enviar a la macro que es URL codificada. La información en el valor variable está en el % TriggerValue%
variable para el Maestro de teclado script para usar.
Ahora, instale el Maestro de teclado macro que se encuentra en el archivo de descarga para este tutorial. Esta macro mostrará el % TriggerValue%
al usuario. El código del servidor envía el IP del cliente que presionó el botón en el sitio web.
A continuación, abra la Maestro de teclado preferencias y haga clic en el Servidor web Opción en la parte superior. Establece las opciones a los siguientes valores: Servidor web habilitado comprobado, Puerto HTTP fijado en 4490, y Acceso al navegador web habilitado comprobado.
Teclado del servidor web del maestroSi abres tu navegador web para http: // localhost: 4490
, verá el Maesto del tecladopágina del servidor web. Si la macro que cargó de la descarga es la única macro que tiene activada desde el servidor web, se mostrará en el Macro pública lista.
Si no se muestra, haga clic en el menú desplegable y seleccione Prueba macro. Tipo Esto es una prueba en el Valor área y presione el Ejecutar botón.
Teclado del servidor web del maestro: macro ejecutadaVerás la notificación mostrada con el texto. Pruebas: esta es una prueba. El enlace que ahora se muestra en la barra de direcciones del navegador debe tener el mismo macro valor como el enlace en el script del servidor en la línea 16. De lo contrario, cambie el script para que coincida con este valor.
Una vez que haya cargado el software del servidor, las bibliotecas instaladas, las ediciones realizadas en el programa del servidor y la Maestro de teclado macro cargada y configuración, entonces puede probar.
Para iniciar el servidor en su VPS, escriba lo siguiente:
nodo freeddns-Router.js
Luego navegue a la dirección del servidor en el puerto 3030.
Página principal de Notification ServerDebería ver la página web mínima con el botón para presionar para enviar la notificación.
Servidor de notificaciones con notificación enviadaCuando presionas el darse cuenta botón, debería obtener el cuadro de diálogo de alerta que le indica que el servidor recibió la notificación de acuerdo. Entonces el Mostrar texto aviso de Maestro de teclado debe mostrar el IP Dirección del cliente que envió la notificación..
Desde que vivo en Tailandia y mi VPS está en los Estados Unidos, el mensaje pasó de mi navegador en Tailandia a la VPS en los Estados Unidos, y luego de vuelta a mi sistema en Tailandia, todo dentro de un minuto.
Si no quieres usar un DDNS, Puedes crear tu propia versión con tu servidor. los local-Router.js El archivo es exactamente el mismo código de enrutador que freeddns-Router.js, pero tiene una nueva ruta: / api / homecomputer
.
También tiene una nueva variable global. homeComputerIP que almacenará la dirección IP del sistema que lo llama.
// // Cargar las librerías utilizadas. // var express = require ("express"); var http = require ("http"); // // Configurar las variables de aplicación. // var app = express (); puerto var = 3030; var data = título: "Página principal de Notification Server", aplicación: "Notification Server"; var homeComputerPortLink = ": 4490 / action.html? macro = 998C71BC-00CE-42B1-9478-306AA747A86A & value = Notice + from +"; var homeComputerIP = ""; // // Configurar las rutas Express. // app.use (express.static ("static")); app.set ("views", "./views") app.set ("view engine", "pug") // // Manejar la página de inicio. Esto le da al cliente // un botón para presionar para enviar una notificación. Esto // representará la plantilla PEG en el directorio "views" //. // app.get ("/", function (req, res) res.render ("index", data);); // // Manejar la solicitud del cliente para enviar a // la computadora del hogar una notificación. // app.get ("/ api / notifyOwner", function (req, res) // // Responda rápidamente al cliente. // res.send ("okay"); // // Obtenga la IP del client. // var ip = req.ip || req.connection.remote; ip = ip.split (":") [3]; // // Envíe la IP del cliente a la computadora del hogar usando // Keyboard Maestro " s Interfaz web. // http.get ("http: //" + homeComputerIP + homeComputerPortLink + ip, (res) => console.log ('Got response: $ res.statusCode'); // consume la respuesta body res.resume ();). on ("error", (e) => console.log ('Got error: $ e.message'););); app.get (" / api / homecomputer ", function (req, res) // // Responda rápidamente al cliente. // res.send (" okay "); // // Obtenga la IP del cliente. // homeComputerIP = req .ip || req.connection.remote; homeComputerIP = homeComputerIP.split (":") [3]; console.log ("El IP de la computadora del hogar es" + homeComputerIP);); // // Iniciar el servidor escuchando el puerto http especificado. // app.listen (puerto, función () console.log ("Notification Server escuchando en el puerto '+ puerto +"! "););
Las líneas 65-77 gestionan esta nueva ruta. Cuando abra esa ruta en su navegador web, obtendrá un texto simple bueno. Pero, el servidor guardará su dirección IP y la usará como la dirección IP para enviar la notificación.
Esto corta la DDNS intermediario y simplemente envía la notificación directamente a su computadora.
Para ejecutar este servidor, escriba la siguiente línea:
nodo local-Router.js
Para que esto funcione bien, tendrá que ir a la dirección para configurar la dirección IP cada vez que se conecte a Internet o ejecutar una tarea en segundo plano que lo haga por usted..
Agujas del reloj es una gran aplicación para hacer scripts que se ejecutan periódicamente. tengo un Tutorial a la derecha, en Envato Tuts +, que tal vez desee consultar.
Macro de Keyboard Maestro para configurar periódicamente la dirección IP en el servidorEl archivo de descarga también tiene lo anterior. Maestro de teclado Macro para llamar periódicamente al servidor para configurar la dirección IP.
Ya que Maestro de teclado no tiene un activador de reinicio de Internet, un activador periódico es la mejor opción. Tendrá que modificar el script para hacer referencia a su VPS.
Dado que este tutorial trata de obtener una notificación activa en su computadora local, no agregué nada para abordar la seguridad. Estos pequeños servidores son actualmente inseguros..
Si usa estos en la naturaleza, le sugiero que cree algún tipo de seguridad para la identificación del cliente que establece la dirección IP..
Puede crear un sistema de contraseña o un sistema de paso de tokens que sea seguro, pero estas ideas están fuera del alcance de este tutorial..
Ahora que ya sabe cómo funcionan las notificaciones activas, cree su propio sistema. Las ideas aquí son fácilmente traducidas a PHP, Rubí, o Pitón. También puede ampliar el Maestro de teclado macro para procesar la información entrante.
Lo tengo configurado para llamar a un Alfredo Flujo de trabajo para contar las visitas a mi sitio web. Podría usar esto para notificar si alguien también necesita ayuda en un sitio web. Las posibilidades solo están limitadas por tu imaginación..