AYUDA PARA NODOS

sockjs NPM (Cómo funciona para desarrolladores)

Introducción

SockJS y IronPDF desempeñan funciones diferentes pero complementarias en la creación de aplicaciones en línea. Un paquete de JavaScript llamado SockJS ofrece una API HTTP bidireccional para la comunicación cliente-servidor que se asemeja a WebSockets. Hace posible que los navegadores web y los servidores se comuniquen en tiempo real y a través de eventos, permitiendo el uso de aplicaciones como salas de chat, noticias en directo y herramientas de trabajo en equipo. Sin embargo, en entornos Node.js, IronPDF es una potente biblioteca JavaScript que permite producir y modificar documentos PDF mediante programación.

Mientras que IronPDF permite crear y gestionar documentos PDF de forma dinámica, el cliente SockJS gestiona el intercambio de datos en tiempo real y las funciones de colaboración en aplicaciones en línea a través de un canal de comunicación entre dominios. Al integrar el homólogo del servidor SockJS con IronPDF, los desarrolladores pueden generar y servir fácilmente documentos PDF basados en datos dinámicos o interacciones del usuario, al tiempo que mejoran sus aplicaciones con cambios en tiempo real. Con esta combinación, los desarrolladores pueden diseñar sofisticadas aplicaciones en línea que admiten una variedad de casos de uso, incluidas aplicaciones de uso intensivo de documentos y plataformas de colaboración, utilizando tanto la comunicación en tiempo real como la creación dinámica de PDF.

¿Qué es SockJS NPM?

SockJS es una biblioteca de JavaScript del lado del navegador que facilita la comunicación bidireccional en tiempo real entre clientes web y servidores. Abstrae WebSocket y ofrece un mecanismo alternativo a protocolos de transporte alternativos como HTTP long-polling y XHR streaming, garantizando la compatibilidad entre varios navegadores y entornos web. Proporciona una API JavaScript sencilla para establecer y gestionar conexiones y gestionar eventos como la apertura de conexiones, la recepción de mensajes y el cierre. Además, SockJS incluye un cliente de línea de comandos para pruebas y depuración, lo que lo hace versátil tanto para entornos de desarrollo como de producción. En general, el objeto JavaScript SockJS simplifica la implementación de funciones en tiempo real en aplicaciones web, soportando canales de comunicación escalables y con capacidad de respuesta.

sockjs NPM (Cómo funciona para desarrolladores): Figura 1 - SockJS

Características principales de SockJS

Compatibilidad entre navegadores

SockJS garantiza un comportamiento y una funcionalidad coherentes en muchos navegadores y entornos web.

Mecanismo de retroceso

Si las conexiones WebSocket no están disponibles o fallan, SockJS puede cambiar de forma transparente a otros protocolos de transporte, como HTTP long-polling, XHR streaming, o incluso JSONP polling.

Comunicación en tiempo real

Permite que las aplicaciones del lado del servidor (generalmente usando Node.js u otras tecnologías del lado del servidor) y las aplicaciones JavaScript del lado del cliente (que se ejecutan en navegadores web) se comuniquen en tiempo real y de forma impulsada por eventos.

Facilidad de uso

Dado que SockJS ofrece una API directa equivalente a WebSocket, los desarrolladores pueden incluirla y utilizarla fácilmente en sus proyectos.

Escalabilidad

SockJS facilita el desarrollo de aplicaciones escalables que pueden gestionar numerosas conexiones simultáneas y una amplia gama de situaciones de red mediante el apoyo a múltiples protocolos de transporte y técnicas de fallback.

Facilidad de integración

Facilita la implementación de funciones en tiempo real proporcionando una API sencilla que los desarrolladores pueden incorporar a sus aplicaciones web sin necesidad de una compleja programación de red de bajo nivel.

Abstracción del Protocolo de Transporte:

SockJS abstrae WebSocket, HTTP long-polling y otros protocolos de transporte subyacentes. Gracias a su adaptabilidad, se garantiza una comunicación fiable incluso en situaciones en las que las conexiones WebSocket están restringidas o no están disponibles.

Crear y configurar SockJS

Por lo general, necesitas configurar SockJS tanto en el lado del cliente (en tu navegador web) como en el lado del servidor (usando incluso un navegador o un marco de servidor como Node.js) para construirlo y configurarlo para la comunicación en tiempo real en una aplicación en línea. A continuación se explica cómo crear y configurar SockJS:

Instalar SockJS

SockJS puede instalarse mediante NPM o incluirse directamente a través de una CDN:

npm install sockjs-client
npm install sockjs-client
SHELL

Incluya SockJS en su HTML

Incluya la biblioteca JavaScript SockJS en el archivo HTML que cree:

<script src="https://cdn.jsdelivr.net/npm/sockjs-client@1/dist/sockjs.min.js"></script>
js
JAVASCRIPT

Inicializar la conexión SockJS

Crea una instancia de SockJS en tu archivo JavaScript (app.js o algo similar) y conéctate a tu servidor:

<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>SockJS + IronPDF Example</title>
  </head>
  <body>
    <script src="https://cdn.jsdelivr.net/npm/sockjs-client@1/dist/sockjs.min.js"></script>
    <script>
      const sock = new SockJS("http://localhost:3000/socket");
      sock.onopen = function () {
        console.log("Connection opened");
      };
      sock.onmessage = function (e) {
        console.log("Message received:", e.data);
      };
      sock.onclose = function () {
        console.log("Connection closed");
      };
      // Example of sending a message
      function sendMessage(message) {
        sock.send(message);
      }
    </script>
    Enter the Message : 
  </body>
</html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>SockJS + IronPDF Example</title>
  </head>
  <body>
    <script src="https://cdn.jsdelivr.net/npm/sockjs-client@1/dist/sockjs.min.js"></script>
    <script>
      const sock = new SockJS("http://localhost:3000/socket");
      sock.onopen = function () {
        console.log("Connection opened");
      };
      sock.onmessage = function (e) {
        console.log("Message received:", e.data);
      };
      sock.onclose = function () {
        console.log("Connection closed");
      };
      // Example of sending a message
      function sendMessage(message) {
        sock.send(message);
      }
    </script>
    Enter the Message : 
  </body>
</html>
HTML

Debe utilizar la URL de su punto final WebSocket del lado del servidor en lugar de "http://localhost:3000/socket".

sockjs NPM (Cómo Funciona Para los Desarrolladores): Figura 2 - Salida de Conexión SockJS

Configuración del servidor

Instalar SockJS-Node

Para instalar el paquete SockJS-Node, utilice npm:

npm install sockjs
npm install sockjs
SHELL

Configurar SockJS Serve

En su servidor Node.js, configure SockJS:

const http = require('http');
const sockjs = require('sockjs');
// Create a SockJS server
const sockjsServer = sockjs.createServer();
// Attach the server to an HTTP server instance
const server = http.createServer();
sockjsServer.installHandlers(server, { prefix: '/socket' });
// Define SockJS event handlers
sockjsServer.on('connection', function(conn) {
    console.log('Client connected');
    conn.on('data', function(message) {
        console.log('Received message:', message);
        // Handle incoming messages from client
    });
    conn.on('close', function() {
        console.log('Client disconnected');
    });
});
// Start the server
const PORT = 3000;
server.listen(PORT, function() {
    console.log(`Server listening on port ${PORT}`);
});
js
JAVASCRIPT

Asegúrese de que el código del lado del servidor está personalizado para cumplir los requisitos de su aplicación y funciona con el marco o la configuración del servidor que ya tiene.

sockjs NPM (Cómo funciona para desarrolladores): Figura 3 - Salida de configuración del servidor SockJS cumpliendo

Solicitudes de origen cruzado (CORS): Cuide el servidor de prueba que maneja eficazmente la configuración de CORS si su servidor y cliente están en dominios separados.

Manejo de Errores: Según las especificaciones de su aplicación, implemente el manejo de errores y las medidas de seguridad en el límite del navegador (como autenticación y autorización).

Despliegue: Configure HTTPS para conexiones seguras y configure SockJS y su servidor para entornos de despliegue.

Esta configuración ofrece una base fundamental para establecer una comunicación en tiempo real entre un cliente web y un servidor web, utilizando SockJS. Dependiendo de los requisitos y la arquitectura de su aplicación en particular, puede ser necesario realizar ajustes.

Para empezar

Configurar una aplicación web que utilice las capacidades de comunicación en tiempo real de SockJS e integre IronPDF para la creación dinámica de PDF es el primer paso para empezar a utilizar SockJS e IronPDF. Aquí tienes una guía para empezar:

¿Qué es IronPDF?

Una poderosa herramienta para Node.js llamada IronPDF está diseñada para transformar datos HTML en archivos PDF de extraordinaria calidad. Sin sacrificar el contenido original de la web, acelera el proceso de convertir archivos HTML, CSS y otros JavaScript en PDFs correctamente formateados. Para aplicaciones web que necesitan generar documentos dinámicos e imprimibles como informes, facturas y certificaciones, esta es una herramienta muy útil.

Configuraciones de página personalizables, encabezados, pies de página y la capacidad de añadir fuentes e imágenes son solo algunas de las capacidades de IronPDF. Puede manejar diseños y estilos intrincados para garantizar que cada archivo PDF de prueba cumpla con los requisitos. Además, IronPDF gestiona la ejecución de JavaScript dentro del HTML, permitiendo una renderización precisa de contenido dinámico e interactivo.

sockjs NPM (Cómo funciona para desarrolladores): Figura 4 - IronPDF

Características de IronPDF

1. Generación de PDF desde HTML

Convierte JavaScript, HTML y CSS a PDF. Admite media queries y diseño responsivo, dos estándares web contemporáneos. útil para decorar dinámicamente informes, facturas y documentos PDF con HTML y CSS.

2. Edición PDF

A los PDF preexistentes se les puede añadir texto, fotos y otros contenidos. Extraiga texto e imágenes de archivos PDF. Combinar numerosos PDF en un solo archivo. Divida archivos PDF en varios documentos independientes. Incluye marcas de agua, anotaciones, encabezados y pies de página.

3. Rendimiento y Fiabilidad

El alto rendimiento y la fiabilidad son cualidades de diseño deseadas en los entornos industriales. Gestiona grandes conjuntos de documentos con facilidad.

Instalar IronPDF

Instale el paquete IronPDF para obtener las herramientas que necesita para trabajar con PDF en proyectos Node.js. En la línea de comandos, añada la siguiente línea de código.

npm install @ironsoftware/ironpdf
npm install @ironsoftware/ironpdf
SHELL

Combinar SockJS con IronPDF

Configure SockJS en su servidor Node.js para gestionar las solicitudes de generación de PDF y las conexiones de los clientes:

// server.js
const http = require("http");
const sockjs = require("sockjs");
const IronPdf = require("@ironsoftware/ironpdf");
var config = IronPdf.IronPdfGlobalConfig;
config.setConfig({
  licenseKey:
    "",
});
// Create a SockJS server
const sockjsServer = sockjs.createServer();
// Attach the server to an HTTP server instance
const server = http.createServer();
sockjsServer.installHandlers(server, { prefix: "/socket" });
// Handle SockJS connections and messages
sockjsServer.on("connection", function (conn) {
  console.log("Client connected");
  // Handle incoming messages (PDF generation requests)
  conn.on("data", async function(message) {
    console.log("Received message:", message);
    // Generate PDF using IronPDF
    let pdfdata = await generatePdf(message);
    // Send generated PDF data back to client
    conn.write(pdfdata);
  });
  conn.on("close", function () {
    console.log("Client disconnected");
  });
});
// Function to generate PDF using IronPDF
const generatePdf = async (htmlContent) => {
  const pdfDocument = IronPdf.PdfDocument;
  let result = (await pdfDocument.fromHtml(htmlContent));
  const pdfBuffer = await result.saveAsBuffer();
  return pdfBuffer;
};
// Start the HTTP server
const PORT = 3000;
server.listen(PORT, function () {
  console.log(`Server listening on port ${PORT}`);
});
js
JAVASCRIPT

Configuración del lado del cliente

Configure SockJS en el lado del cliente para interactuar con el servidor y enviar solicitudes para generar archivos PDF.

<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>SockJS + IronPDF Example</title>
</head>
<body>
    <button onclick="generatePdf()">Generate PDF</button>
      <!--// add SockJS browser JavaScript library -->
    <script src="https://cdn.jsdelivr.net/npm/sockjs-client@1/dist/sockjs.min.js"></script>
    <script>
        const sock = new SockJS('http://localhost:3000/socket');
        sock.onopen = function() {
            console.log('Connection opened');
        };
        sock.onmessage = function(e) {
            console.log('PDF received');
            // Example: Display or download PDF received from server
            displayPdf(e.data);
        };
        sock.onclose = function() {
            console.log('Connection closed');
        };
        function generatePdf() {
            // Example: HTML content to generate PDF
            const htmlContent = '<html><body><h1>Hello, IronPDF!</h1></body></html>';
            // Send HTML content to server for PDF generation
            sock.send(htmlContent);
        }
        function displayPdf(pdfData) {
            // Example: Display or download PDF data received from server
            const pdfBlob = new Blob([atob(pdfData)], { type: 'application/pdf' });
            const pdfUrl = URL.createObjectURL(pdfBlob);
            window.open(pdfUrl, '_blank');
        }
    </script>
</body>
</html>
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>SockJS + IronPDF Example</title>
</head>
<body>
    <button onclick="generatePdf()">Generate PDF</button>
      <!--// add SockJS browser JavaScript library -->
    <script src="https://cdn.jsdelivr.net/npm/sockjs-client@1/dist/sockjs.min.js"></script>
    <script>
        const sock = new SockJS('http://localhost:3000/socket');
        sock.onopen = function() {
            console.log('Connection opened');
        };
        sock.onmessage = function(e) {
            console.log('PDF received');
            // Example: Display or download PDF received from server
            displayPdf(e.data);
        };
        sock.onclose = function() {
            console.log('Connection closed');
        };
        function generatePdf() {
            // Example: HTML content to generate PDF
            const htmlContent = '<html><body><h1>Hello, IronPDF!</h1></body></html>';
            // Send HTML content to server for PDF generation
            sock.send(htmlContent);
        }
        function displayPdf(pdfData) {
            // Example: Display or download PDF data received from server
            const pdfBlob = new Blob([atob(pdfData)], { type: 'application/pdf' });
            const pdfUrl = URL.createObjectURL(pdfBlob);
            window.open(pdfUrl, '_blank');
        }
    </script>
</body>
</html>
HTML

Server-Side: Un servidor SockJS (sockjsServer) está configurado por el servidor Node.js, que luego vigila las conexiones en el puerto /socket. Utiliza IronPDF (IronPdf.PdfDocument) para invocar la función generatePdf() con el fin de gestionar los mensajes entrantes (solicitudes de generación de PDF). Tras generar el PDF, utiliza la conexión SockJS para enviar los datos PDF codificados en base64 al cliente.

sockjs NPM (Cómo Funciona Para Desarrolladores): Figura 5 - Salida del Código Fuente del Cliente SockJS

Cliente: El cliente se conecta al servidor a través de una conexión SockJS (sock) y observa eventos como onopen, onmessage y onclose. El usuario utiliza sock.send(htmlContent) para enviar contenido HTML (htmlContent) al servidor para la generación de PDF cuando hace clic en el botón "Generar PDF". Muestra o descarga el PDF al cliente, después de obtener los datos del PDF del servidor (sock.onmessage).

sockjs NPM (Cómo Funciona Para Desarrolladores): Figura 6 - Salida del Lado del Cliente

A continuación se muestra el resultado generado a partir del código.

sockjs NPM (Cómo funciona para desarrolladores): Figura 7 - Salida PDF

Conclusión

Se crea una fuerte sinergia en el desarrollo de aplicaciones web cuando se utiliza SockJS para la comunicación en tiempo real y IronPDF para la producción dinámica de PDF. SockJS facilita la comunicación bidireccional entre clientes y servidores, lo que permite funciones como la colaboración interactiva y las actualizaciones en tiempo real. Sin embargo, IronPDF ofrece a los programadores la posibilidad de crear y modificar documentos PDF mediante programación. Incluso puede convertir dinámicamente texto HTML en PDF.

La integración de estas tecnologías hace posible aplicaciones web complejas que pueden crear documentos PDF al instante en respuesta a las entradas del usuario o a actualizaciones de datos en tiempo real. Las aplicaciones que requieran la generación de documentos en tiempo real, la edición en grupo o la elaboración de informes interactivos encontrarán esta integración especialmente útil. Mediante la utilización de SockJS para actualizaciones instantáneas y IronPDF para la creación dinámica de PDF, los desarrolladores pueden optimizar la experiencia del usuario, optimizar los flujos de trabajo y proporcionar soluciones resistentes que satisfagan una serie de requisitos empresariales para cualquier usuario serio de SockJS.

Podemos aumentar la utilidad de su conjunto de herramientas de desarrollo de aplicaciones Node.js utilizando IronPDF para agregar OCR, escaneo de códigos de barras, producción de PDF, interacción con Excel y muchas otras características. Los sistemas altamente configurables de Iron Software y una extensa biblioteca de plugins con soporte de la comunidad permiten a los desarrolladores construir características y aplicaciones web más rápidamente.

Los desarrolladores pueden utilizar las numerosas características de IronPDF con una licencia de prueba gratuita y una variedad de ejemplos de código de la empresa antes de optar por la compra. Para obtener más información sobre las licencias perpetuas de IronPDF, visite la página de licencias. Para más instrucciones sobre cómo empezar a utilizar IronPDF, visite la página de documentación.

Darrius Serrant
Ingeniero de Software Full Stack (WebOps)

Darrius Serrant tiene una licenciatura en Informática de la Universidad de Miami y trabaja como Ingeniero de Marketing WebOps Full Stack en Iron Software. Atraído por la programación desde una edad temprana, veía la computación como algo misterioso y accesible, lo que la convertía en el medio perfecto para la creatividad y la resolución de problemas.

En Iron Software, Darrius disfruta creando cosas nuevas y simplificando conceptos complejos para hacerlos más comprensibles. Como uno de nuestros desarrolladores residentes, también se ha ofrecido como voluntario para enseñar a los estudiantes, compartiendo su experiencia con la próxima generación.

Para Darrius, su trabajo es gratificante porque es valorado y tiene un impacto real.

< ANTERIOR
browserify NPM (Cómo funciona para desarrolladores)
SIGUIENTE >
JsdomNPM (Cómo funciona para desarrolladores)

¿Listo para empezar? Versión: 2025.5 acaba de salir

Ver licencias >