Como crear un servicio de UDP e implementarlo en C4C7OPS

El objetivo de este post será crear un servicio que comunique un cliente y un servidor udp y luego ser capaces de desplegarlo en C4C7OPS para ver nuestro servicio en producción, en este ejemplo usaremos Node.js y el módulo dgram, para lograr esto debemos seguir los siguientes pasos:

  1. Inicializar nuestro servicio en Node.js

  2. Inicializar nuestro cliente en Node.js

  3. Subir nuestro servicio a Git.

  4. Crear nuestro servicio en C4C7OPS.

  5. Desplegar nuestro servicio.

  6. Probar nuestro servicio en producción.

1. Inicializar nuestro servicio en Node.js:

1.1. Para crear nuestro proyecto ejecutaremos los siguientes comandos en una terminal:

$ mkdir utp-server && cd utp-server

$ npm init -y

1.2 Configurar nuestro proyecto para recibir peticiones udp en un server

Creamos un archivo en la base del proyecto llamado index.js

-index.js // Importamos el módulo dgram const dgram = require('dgram'); // Creamos un socket udp const server = dgram.createSocket('udp4'); // Creamos un listener para los eventos "message" server.on('message', (msg, rinfo) => { /* Configuramos un log cuando el evento llegue que nos muestre el mensaje y la info del remitente */ console.log(`Servidor recibió: ${msg} desde ${rinfo.address}:${rinfo.port}`); // Enviamos una respuesta al cliente const responseMessage = Buffer.from('Mensaje recibido'); server.send(responseMessage, 0, responseMessage.length, rinfo.port, rinfo.address, (err) => { // Manejamos un posible error if (err) { console.error('Error al enviar la respuesta:', err); } else { console.log('Respuesta enviada'); } }); }); // Manejamos errores globales server.on('error', (err) => { console.error(`Servidor error:\n${err.stack}`); server.close(); }); // Creamos un listener cuando el servidor se ponga en modo escucha server.on('listening', () => { const address = server.address(); console.log(`Servidor escuchando en ${address.address}:${address.port}`); }); // Vinculamos el servidor a un puerto y dirección específicos server.bind(41234, 'localhost');

1.3 Configuramos un script de ejecución en el package.json

{ //...resto del packaje json "scripts": { //...resto de scripts "start": "node index.js" } }

1.4 Corremos nuestro script en una terminal

$ npm start

Imagen 1

Ya con esto tendríamos montado nuestro servidor

2. Inicializar nuestro cliente en Node.js:

2.1 Para crear nuestro proyecto ejecutaremos los siguientes comandos en una terminal:

$ mkdir utp-client && cd utp-client

$ npm init -y

2.2 Configurar nuestro proyecto para enviar peticiones udp en un cliente.

Creamos un archivo en la base del proyecto llamado index.js

const dgram = require('dgram'); const client = dgram.createSocket('udp4'); // Definimos el mensaje que queremos enviar const message = Buffer.from('Hola, servidor udp'); // Enviamos el mensaje hacia el localhost en el puerto donde corre el servidor client.send(message, 0, message.length, 41234, 'localhost', (err) => { if (err) { console.error('Error al enviar el mensaje:', err); client.close(); } else { console.log('Mensaje enviado'); } }); // Manejamos las respuestas del servidor client.on('message', (msg, rinfo) => { console.log(`Cliente recibió: ${msg} desde ${rinfo.address}:${rinfo.port}`); // cerramos el cliente client.close(); }); // Manejamos errores client.on('error', (err) => { console.error(`Cliente error:\n${err.stack}`); client.close(); });

2.3 Configuramos un script de ejecución en el package.json

{ //...resto del packaje json "scripts": { //...resto de scripts "start": "node index.js" } }

2.4 Corremos nuestro script en una terminal

$ npm start

Podremos ver que se envió un mensaje desde el cliente al servidor y recibió una respuesta del servidor

Imagen 2

Y en el servidor podemos ver que se recibe el mensaje y se envió una respuesta correctamente

Imagen 3

Ya con esto tendríamos configurado nuestro cliente.

3. Subir nuestro servicio a Git.

3.1 Volvemos a la terminal del servidor.

Aquí vamos a escribir los siguientes comandos para subir nuestro servicio a git.

$ git init

$ git add .

git commit -m "utp-server"

git branch -M master

git remote add origin git@github.com:example/utp-server.git

git push -u origin master

4. Crear nuestro servicio en C4C7OPS.

4.1 Nos dirigimos a la sección de backends en C4C7OPS y Presionamos crear:

Imagen 4

4.2 Una vez aquí llenamos los valores con la configuración de nuestro servicio udp-Server:

Vamos a configurar primero un nombre, el repo de git donde subimos nuestro servicio, como tipo escogemos Service with NLB, definimos nuestro Puerto principal (Port) y le asignamos un DNS.

Imagen 5

Posteriormente empezamos a configurar los puertos para la comunicación por protocolo udp y presionamos Save.

Imagen 6

5. Desplegar nuestro servicio.

5.1 Buscamos nuestro servicio y nos dirigimos a Deploys:

Imagen 8

Presionamos + Create.

Imagen 9

5.2 Seleccionamos la rama de nuestro proyecto y presionamos Deploy.

Presionamos la opción de asignar Runtime settings.

Imagen 10

Esto nos abrirá una nueva pestaña donde presionaremos Save.

Imagen 11

Cerraremos y abriremos el modal nuevamente para que se vea reflejado el cambio y posteriormente escribiremos el nombre de la branch que queremos desplegar, en este caso master, para después presionar en Launch.

Imagen 12

Esto nos dirigirá al deploy que acabamos de crear donde esperaremos hasta que haya finalizado.

Imagen 13

Imagen 14

6. Probar nuestro servicio en producción.

6.1 Nos dirigiremos de nuevo a la sección de backends y entramos a los Logs del servicio.

Imagen 15

6.2 Configuramos el rango de tiempo y presionamos Get Logs para obtener los logs que configuramos al crear el servicio.

Imagen 16

6.3 Volvemos a nuestro cliente udp y cambiamos el dns a donde apuntamos reemplazándolo por el que pusimos al crear nuestro servicio.

...index.js client.send(message, 41234, 'U-server-blog.U-blog.c4c7ops.com', (err) => { if (err) { console.error('Error al enviar el mensaje:', err); client.close(); } else { console.log('Mensaje enviado'); } });

Después de reemplazar estos valores por los que tenemos en producción correremos el script.

$ npm start

Y apreciamos este mensaje en consola.

Imagen 17

Lo que significa que todo se configuró correctamente y se envió un mensaje a nuestro servicio en producción

6.4 Volvemos a los Logs de C4C7OPS y presionamos Get Logs de nuevo.

Aquí podremos apreciar cómo llegó el mensaje correctamente y se envió una respuesta.

Imagen 18

Conclusión.

Si seguiste todos los pasos al pie de la letra enhorabuena, habrás configurado correctamente un servicio de comunicación udp 🥳, Para más de nuestras guías puedes entrar a la sección de Help center en C4C7OPS y seguir disfrutando de escalabilidad y seguridad en pocos pasos para todo tipo de servicios 🌵.

We use cookies to enhance your experience on our site and tailor content to your needs. By clicking "Accept," you agree. Read our Cookie Policy and Privacy and Data Policy, and our Terms and conditions for more information.