Saltar al pie de página
AYUDA DE NODE

sockjs NPM (Cómo funciona para desarrolladores)

SockJS e IronPDF desempeñan roles diferentes pero complementarios en la construcció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. Permite que los navegadores web y los servidores se comuniquen en tiempo real y a través de eventos, habilitando el uso de aplicaciones como salas de chat, noticias en vivo y herramientas de trabajo en equipo. Sin embargo, en entornos Node.js, IronPDF es una potente biblioteca de JavaScript que permite la creación y modificación de documentos PDF de manera programática.

Mientras que IronPDF permite la creación y gestión de documentos PDF de forma dinámica, el cliente SockJS gestiona el intercambio de datos en tiempo real y las características de colaboración en aplicaciones en línea a través de un canal de comunicación de dominios cruzados. Al integrar la contraparte del servidor SockJS con IronPDF, los desarrolladores pueden generar y servir fácilmente documentos PDF basados en datos dinámicos o interacciones de usuario, mientras 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 intensivas en documentos y plataformas colaborativas, aprovechando 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 cliente que facilita la comunicación bidireccional en tiempo real entre clientes web y servidores. Abstrae WebSocket y ofrece un mecanismo de respaldo a protocolos de transporte alternativos como HTTP long-polling y XHR streaming, garantizando compatibilidad a través de varios navegadores web y entornos. Proporciona una API de JavaScript sencilla para establecer y gestionar conexiones y manejar eventos como la apertura de conexiones, recepción de mensajes y cierre. Además, SockJS incluye un cliente de línea de comandos para propósitos de prueba y depuración, lo que lo hace versátil tanto para entornos de desarrollo como de producción. En general, el objeto JavaScript de SockJS simplifica la implementación de funciones en tiempo real en aplicaciones web, apoyando canales de comunicación escalables y receptivos.

sockjs NPM (Cómo Funciona Para Desarrolladores): Figura 1 - SockJS

Características principales de SockJS

Compatibilidad entre navegadores

SockJS asegura un comportamiento y funcionalidad consistentes a través de muchos navegadores web y entornos.

Mecanismo de devolución

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

Comunicación en tiempo real

Permite a las aplicaciones del lado del servidor (por lo general usando Node.js u otras tecnologías del lado del servidor) y a las aplicaciones JavaScript del lado del cliente (que se ejecutan en navegadores web) comunicarse en tiempo real y de manera orientada a eventos.

Facilidad de uso

Debido a que SockJS ofrece una API sencilla equivalente a WebSocket, los desarrolladores pueden incluirlo y utilizarlo fácilmente en sus proyectos.

Escalabilidad

SockJS facilita el desarrollo de aplicaciones escalables que pueden gestionar numerosas conexiones concurrentes y una variedad de situaciones de red al admitir múltiples protocolos de transporte y técnicas de respaldo.

Facilidad de integración

Facilita la implementación de funciones en tiempo real al proporcionar una API simple que los desarrolladores pueden incorporar en sus aplicaciones web sin requerir programación de red de bajo nivel compleja.

Abstracción del Protocolo de Transporte:

WebSocket, HTTP long-polling y otros protocolos de transporte subyacentes son abstraídos por SockJS. Debido a su adaptabilidad, se garantiza una comunicación confiable incluso en situaciones donde las conexiones WebSocket están restringidas o no disponibles.

Crear y configurar SockJS

Por lo general, necesita configurar SockJS tanto en el lado del cliente (en su navegador web) como en el lado del servidor (usando un navegador o marco de servidor como Node.js) para construir y configurarlo para una comunicación en tiempo real en una aplicación en línea. Lo siguiente es una guía básica para crear y configurar SockJS:

Instalar SockJS

SockJS se puede instalar usando NPM o incluir directamente a través de un CDN:

npm install sockjs-client
npm install sockjs-client
SHELL

Incluya SockJS en su HTML

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

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

Inicializar conexión SockJS

Cree una instancia de SockJS en su archivo de JavaScript (app.js o algo similar) y conéctese a su 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>
      // Initialize SockJS connection
      const sock = new SockJS("http://localhost:3000/socket");

      // Event handlers
      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 function to send 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>
      // Initialize SockJS connection
      const sock = new SockJS("http://localhost:3000/socket");

      // Event handlers
      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 function to send a message
      function sendMessage(message) {
        sock.send(message);
      }
    </script>
    Enter the Message:
  </body>
</html>
HTML

La URL de su punto de conexión WebSocket del lado del servidor debe utilizarse en lugar de "http://localhost:3000/socket".

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

Configuración del lado del servidor

Instalar SockJS-Node

Para instalar el paquete SockJS-Node, use npm:

npm install sockjs
npm install sockjs
SHELL

Configurar el servidor SockJS

En su servidor Node.js, configure SockJS:

// Import necessary modules
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();

// Install SockJS handlers
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}`);
});
// Import necessary modules
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();

// Install SockJS handlers
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}`);
});
JAVASCRIPT

Asegúrese de que el código del lado del servidor se personalice para cumplir con los requisitos de su aplicación y funcione con el marco o configuración del servidor que ya tiene.

sockjs NPM (Cómo Funciona Para Desarrolladores): Figura 3 - Configuración de Servidor SockJS resultante

Solicitudes de Origen Cruzado (CORS): Asegúrese de que su servidor maneje de manera efectiva la configuración de CORS si su servidor y cliente están en dominios separados.

Manejo de Errores: Implemente el manejo de errores y medidas de seguridad (como autenticación y autorización) según las especificaciones de su aplicació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 la comunicación en tiempo real entre un cliente web y un servidor web usando SockJS. Dependiendo de los requisitos y la arquitectura de su aplicación particular, pueden ser necesarias ajustes.

Empezando

Configurar una aplicación web que haga uso de las capacidades de comunicación en tiempo real de SockJS e integre IronPDF para la creación dinámica de PDFs es el primer paso para comenzar a usar SockJS e IronPDF. Aquí hay una guía de punto de partida:

¿Qué es IronPDF?

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

Configuraciones de página personalizables, encabezados, pies de página y la capacidad de agregar fuentes e imágenes son solo algunas de las capacidades de IronPDF. Puede manejar diseños y estilos complejos para garantizar que cada salida de prueba de PDF satisfaga los requisitos. Además, IronPDF maneja la ejecución de JavaScript dentro del HTML, permitiendo una redacción dinámica e interactiva precisa.

sockjs NPM (Cómo Funciona Para Desarrolladores): Figura 4 - IronPDF

Características de IronPDF

1. Generación de PDF a partir de HTML

Convierte JavaScript, HTML y CSS a PDF. Soporta consultas de medios y diseño responsivo, dos estándares web contemporáneos. Útil para decorar dinámicamente informes PDF, facturas y documentos con HTML y CSS.

2. Edición de PDF

Se pueden agregar texto, imágenes y otro contenido a los PDFs preexistentes. Extraer texto e imágenes de archivos PDF. Combine varios PDFs en un solo archivo. Divida archivos PDF en múltiples documentos separados. Incluya marcas de agua, anotaciones, encabezados y pies de página.

3. Rendimiento y fiabilidad

Se desean características de diseño de alto rendimiento y fiabilidad en los entornos industriales. Gestiona grandes conjuntos de documentos fácilmente.

Instalar IronPDF

Instale el paquete de IronPDF para obtener las herramientas que necesita para trabajar con PDFs en proyectos Node.js. Ejecuta el siguiente comando:

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

Combine SockJS con IronPDF

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

// server.js

// Import necessary modules
const http = require("http");
const sockjs = require("sockjs");
const IronPdf = require("@ironsoftware/ironpdf");

// Configure IronPDF with your license key
var config = IronPdf.IronPdfGlobalConfig;
config.setConfig({
  licenseKey: "",  // Add your IronPDF license key here
});

// Create a SockJS server
const sockjsServer = sockjs.createServer();

// Attach the SockJS 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}`);
});
// server.js

// Import necessary modules
const http = require("http");
const sockjs = require("sockjs");
const IronPdf = require("@ironsoftware/ironpdf");

// Configure IronPDF with your license key
var config = IronPdf.IronPdfGlobalConfig;
config.setConfig({
  licenseKey: "",  // Add your IronPDF license key here
});

// Create a SockJS server
const sockjsServer = sockjs.createServer();

// Attach the SockJS 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}`);
});
JAVASCRIPT

Configuración del lado del cliente

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

<!-- 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>
        // Initialize SockJS connection
        const sock = new SockJS('http://localhost:3000/socket');

        // Event handlers
        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 to generate PDF
        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 to display or download PDF data
        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>
        // Initialize SockJS connection
        const sock = new SockJS('http://localhost:3000/socket');

        // Event handlers
        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 to generate PDF
        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 to display or download PDF data
        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

Lado del Servidor: El servidor Node.js configura un servidor SockJS (sockjsServer) y escucha conexiones en la ruta /socket. Utiliza IronPDF (IronPdf.PdfDocument) para invocar la función generatePdf() con el fin de manejar mensajes entrantes (solicitudes de generación de PDF). Después de generar el PDF, utiliza la conexión SockJS para enviar los datos del PDF codificados en base64 de vuelta al cliente.

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

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

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

A continuación se muestra la salida generada a partir del código.

sockjs NPM (Cómo Funciona Para Desarrolladores): Figura 7 - Salida PDF

Conclusión

Se crea una sinergia fuerte en el desarrollo de aplicaciones web cuando SockJS se usa para la comunicación en tiempo real y IronPDF se utiliza para la producción dinámica de PDF. Con SockJS, la comunicación bidireccional entre clientes y servidores se facilita, habilitando funciones como la colaboración interactiva y las actualizaciones en tiempo real. Sin embargo, IronPDF concede a los programadores la capacidad de crear y modificar documentos PDF de manera programática. Incluso puede convertir dinámicamente texto HTML en PDFs.

Complejas aplicaciones web que pueden crear documentos PDF al instante en respuesta a entradas del usuario o actualizaciones de datos en tiempo real son posibles gracias a la integración de estas tecnologías. Aplicaciones que requieren generación de documentos en tiempo real, edición grupal o funcionalidades de reportes interactivos encontrarán especialmente útil esta integración. A través de la utilización de SockJS para actualizaciones instantáneas e IronPDF para la creación dinámica de PDFs, los desarrolladores pueden optimizar la experiencia del usuario, optimizar los flujos de trabajo y proporcionar soluciones resistentes que satisfagan una variedad de requisitos comerciales para cualquier usuario serio de SockJS.

Podemos aumentar la utilidad de su kit de desarrollo de aplicaciones Node.js al utilizar IronPDF para agregar OCR, escaneo de códigos de barras, producción de PDFs, interacción con Excel y muchas otras características. Los sistemas altamente configurables de Iron Software y su extensa biblioteca de complementos comunitarios 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 proporcionados por la empresa antes de optar por comprar. Para obtener más información sobre la licencia perpetua de IronPDF, visite la página de licencias. Para obtener más instrucciones sobre cómo comenzar a usar IronPDF, visite la página de documentación.

Darrius Serrant
Ingeniero de Software Full Stack (WebOps)

Darrius Serrant tiene una licenciatura en Ciencias de la Computación de la Universidad de Miami y trabaja como Ingeniero de Marketing WebOps Full Stack en Iron Software. Atraído por la programación desde joven, vio la computación como algo misterioso y accesible, convirtiéndolo en el ...

Leer más