AYUDA PARA NODOS

faye NPM (Cómo funciona para desarrolladores)

Publicado en 24 de octubre, 2024
Compartir:

Introducción

IronPDF y Faye desempeñan funciones diferentes en el desarrollo web, pero sus conocimientos se complementan a la perfección. Utilizando WebSocket u otros transportes compatibles, servidores y clientes web pueden comunicarse en tiempo real gracias al paquete NPM Faye. Ofrece un pub/sub sencillo pero eficazmensajería sistema que permite aplicaciones web escalables e instantáneas de intercambio de datos. 1.4.0 es la última versión de Faye publicada hace 4 años. Por otro lado, otro paquete npm llamado IronPDF permite a los desarrolladores crear, modificar y convertir mediante programación documentos PDF en entornos Node.js.

Los desarrolladores pueden mejorar las aplicaciones web con capacidades de producción de PDF en tiempo real integrando Faye con IronPDF. Las aplicaciones que necesiten la generación instantánea de informes PDF, la generación dinámica de documentos en función de las entradas del usuario o los cambios de datos en tiempo real, y los escenarios de edición colaborativa de documentos pueden encontrar esta conexión muy útil. Con la ayuda de las herramientas de creación de PDF de IronPDF y las sencillas funciones de mensajería de publicación y suscripción en tiempo real de Faye, los desarrolladores pueden diseñar aplicaciones web basadas en datos, interactivas y adaptables que cumplan diversos objetivos empresariales y de usuario.

¿Qué es Faye?

Un plugin de Node.js llamadoFaye facilita la comunicación en tiempo real entre clientes y servidores mediante WebSocket u otro transporte compatible y el protocolo WebSocket. Ofrece un mecanismo de mensajería pub/sub que hace que la comunicación entre aplicaciones web sea escalable y eficaz. Al gestionar sin problemas las conexiones y el enrutamiento de mensajes entre clientes y servidores, Faye pretende hacer menos complicado el despliegue de funciones en tiempo real, como actualizaciones en directo, notificaciones e interacciones colaborativas. Los desarrolladores suelen integrar Faye para mejorar sus aplicaciones con funciones colaborativas, interactivas y receptivas que requieren la transmisión de datos en tiempo real entre usuarios y servidores.

faye NPM(Cómo funciona para desarrolladores): Figura 1 - Faye

Características de Faye

El módulo NPM de Faye es una herramienta útil para integrar la mensajería de eventos en tiempo real en aplicaciones web, ya que proporciona varias funciones importantes:

Compatibilidad con WebSocket y protocolos de transporte: Gracias a la compatibilidad con WebSocket y los métodos alternativos de protocolos de transporte, como HTTP long-polling, Faye puede mantener canales de comunicación en tiempo real con diferentes navegadores y configuraciones de red.

Pub/Sub Messaging: Con la ayuda del patrón de mensajería publish/subscribe de Faye, los usuarios pueden suscribirse a determinados canales(temas) y recibir actualizaciones o mensajes en cuanto se publiquen allí.

Escalabilidad: Puede gestionar eficazmente un gran número de conexiones y mensajes concurrentes gracias a su arquitectura escalable, lo que lo hace apropiado para aplicaciones que exigen un gran rendimiento y capacidad de respuesta.

Integración del lado del cliente y del lado del servidor: Faye facilita la comunicación fluida entre los clientes y los servidores web mediante la integración tanto del lado del cliente como del lado del servidor(navegador) y del lado del servidor(Node.js).

Seguridad: Para regular el acceso a canales y mensajes, incorpora técnicas para proteger las conexiones WebSocket, así como para realizar procedimientos de autenticación y autorización.

Facilidad de uso: Los desarrolladores pueden crear funciones como actualizaciones en directo, notificaciones, sistemas de chat y mucho más con poca configuración utilizando la sencilla API de Faye para configurar y gestionar comunicaciones en tiempo real.

Fiabilidad: Faye mantiene canales de comunicación robustos que son resistentes a las interrupciones de la red mediante la gestión de reconexiones y garantizando la fiabilidad de la entrega de mensajes.

Personalización y extensibilidad: Con el uso de plugins, extensiones y adaptadores únicos, los desarrolladores pueden aumentar la capacidad de Faye y proporcionar soluciones especializadas para satisfacer ciertas necesidades de las aplicaciones.

Crear y configurar Faye

Tanto la integración del lado del cliente como la instancia de Faye del lado del servidor deben configurarse para construir y configurar Faye utilizando NPM en un entorno Node.js. Aquí tienes un manual para ponerte en marcha:

Configuración del servidor

Instalar Faye

Instale primero el paquete Faye:

npm install faye
npm install faye
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npm install faye
VB   C#

Crear servidor Faye

Asegúrate de que el servidor Faye está configurado creando un archivo server.js en Node.js:

// server.js
const http = require('http');
const faye = require('faye');
// Create an HTTP server
const server = http.createServer();
// Mount the Faye server at '/faye'
const bayeux = new faye.NodeAdapter({ mount: '/faye', timeout: 45 });
// Attach Faye to the HTTP server
bayeux.attach(server);
// Start the HTTP server
const PORT = 8000;
server.listen(PORT, () => {
    console.log(`Faye server listening on port ${PORT}`);
});
// server.js
const http = require('http');
const faye = require('faye');
// Create an HTTP server
const server = http.createServer();
// Mount the Faye server at '/faye'
const bayeux = new faye.NodeAdapter({ mount: '/faye', timeout: 45 });
// Attach Faye to the HTTP server
bayeux.attach(server);
// Start the HTTP server
const PORT = 8000;
server.listen(PORT, () => {
    console.log(`Faye server listening on port ${PORT}`);
});
' server.js
const http = require( 'http');
const faye = require( 'faye');
' Create an HTTP server
const server = http.createServer()
' Mount the Faye server at '/faye'
const bayeux = New faye.NodeAdapter({ mount: '/faye', timeout: 45 });
' Attach Faye to the HTTP server
bayeux.attach(server)
' Start the HTTP server
const PORT = 8000
server.listen(PORT, Sub()
	console.log(`Faye server listening on port ${PORT}`)
End Sub)
VB   C#

En este caso, un servidor HTTP que escucha en el puerto 8000 tiene el servidor Faye montado en /faye. Adapte el puerto y la ruta de montaje a las necesidades de la versión de su aplicación.

faye NPM(Cómo funciona para desarrolladores): Figura 2 - Salida de la consola de Faye

Configuración del lado del cliente

Añade la biblioteca cliente Faye a tu página HTML o utiliza un agrupador de módulos como Webpack o Browserify para hacerlo:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Faye Client Example</title>
  </head>
  <script
    type="text/javascript"
    src="http://localhost:8000/faye/client.js"
  ></script>
  <body>
    <!-- Your HTML content -->
    Enter the Message : 
    <script>
      // Initialize Faye client
      const client = new Faye.Client('http://localhost:8000/faye');
      // Subscribe to a channel
      client.subscribe('/channel', function(message) {
          console.log('Received message:', message);
          // Handle received messages
      });
      // Publish a message
      function publishMessage(message) {
          client.publish('/channel', { text: message });
      }
    </script>
  </body>
</html>
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Faye Client Example</title>
  </head>
  <script
    type="text/javascript"
    src="http://localhost:8000/faye/client.js"
  ></script>
  <body>
    <!-- Your HTML content -->
    Enter the Message : 
    <script>
      // Initialize Faye client
      const client = new Faye.Client('http://localhost:8000/faye');
      // Subscribe to a channel
      client.subscribe('/channel', function(message) {
          console.log('Received message:', message);
          // Handle received messages
      });
      // Publish a message
      function publishMessage(message) {
          client.publish('/channel', { text: message });
      }
    </script>
  </body>
</html>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title> Faye Client Example</title> </head> <script type="text/javascript" src="http://localhost:8000/faye/client.js" ></script> <body> <!-- Your HTML content -- > Enter the Message : <script> const client = New Faye.Client('http: client.subscribe('/channel', @function(message) { console.log('Received message:', message); }); @function publishMessage(message) { client.publish('/channel', { text: message }); } </script> </body> </html>
VB   C#

Adaptar la URL del servidor Faye(http://localhost:8000/faye) y el código fuente y la URL del script cliente de Faye(browser.js) a su configuración.

faye NPM(Cómo funciona para desarrolladores): Figura 3 - Salida del lado del cliente

Puede añadir eficazmente funciones de mensajería en tiempo real en su aplicación web Node.js configurando el paquete Faye siguiendo estas instrucciones. Modifique los ejemplos en función de la arquitectura y las necesidades de su aplicación concreta.

Para empezar

Tendrá que configurar un servidor Node.js para gestionar las conexiones con Faye y las solicitudes de generación de PDF antes de poder utilizar IronPDF para la generación dinámica de PDF y Faye para las comunicaciones en tiempo real. Aquí tienes información detallada:

¿Qué es IronPDF?

IronPDF es un robusto programa Node.js diseñado para convertir datos HTML en archivos PDF de increíble calidad. Acelera el proceso de convertir archivos HTML, CSS y otros de JavaScript en PDFs correctamente formateados sin comprometer el contenido original en línea. Esta es una herramienta altamente útil para aplicaciones web que necesitan producir documentos dinámicos e imprimibles, como facturas, certificaciones e informes.

IronPDF cuenta con varias funciones, como la posibilidad de personalizar la configuración de la página, los encabezados, los pies de página y la opción de añadir fuentes e imágenes. Puede gestionar estilos y diseños complejos para garantizar que cada salida de prueba PDF cumpla con las especificaciones. Además, IronPDF controla la ejecución de JavaScript dentro de HTML, lo que permite una representación precisa del contenido dinámico e interactivo.

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

Características de IronPDF

1. Generación de PDF desde HTML

Convierte HTML, CSS y JavaScript a PDF. Admite dos estándares web modernos: media queries y diseño responsivo. Práctico para utilizar HTML y CSS para decorar dinámicamente documentos PDF, facturas e informes.

2. Edición PDF

Es posible añadir texto, imágenes y otros materiales a PDF ya existentes. Extrae texto e imágenes de archivos PDF. Combina muchos PDFs en un solo archivo. Divide archivos PDF en varios documentos distintos. Añade encabezados, pies de página, anotaciones y marcas de agua.

3. Rendimiento y Fiabilidad

En contextos industriales, el alto rendimiento y la fiabilidad son atributos de diseño deseables. Maneja fácilmente conjuntos de documentos grandes.

Instalar IronPDF

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

npm install @ironsoftware/ironpdf
npm install @ironsoftware/ironpdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'npm install @ironsoftware/ironpdf
VB   C#

Combine Faye con IronPDF

Crear un servidor Node.js rudimentario que combine IronPDF para la producción de PDF con Faye para la mensajería en tiempo real:

// server.js
const http = require('http');
const faye = require('faye');
const IronPdf = require('@ironsoftware/ironpdf');
var config = IronPdf.IronPdfGlobalConfig;
config.setConfig({
    licenseKey:
      "",
  });
// Create an HTTP server
const server = http.createServer();
// Create a Faye server
const bayeux = new faye.NodeAdapter({ mount: '/faye', timeout: 45 });
// Attach the Faye server to the HTTP server
bayeux.attach(server);
// Handle Faye client connections
bayeux.on('handshake', function(clientId) {
    console.log(`Client connected: ${clientId}`);
});
// Handle incoming messages for PDF generation
bayeux.on('publish', async function (clientId, channel, data) {
    if (channel === '/generate_pdf') {
        console.log(`Received PDF generation request from client ${clientId}: ${data.htmlContent}`);
        // Generate PDF using IronPDF
        let pdfData=await generatePdf(data.htmlContent)
        var base64String = btoa(String.fromCharCode.apply(null, new Uint8Array(pdfData)));
        bayeux.getClient().publish(`/pdf_result/${clientId}`, { pdfData: base64String });
    }
});
// 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
const http = require('http');
const faye = require('faye');
const IronPdf = require('@ironsoftware/ironpdf');
var config = IronPdf.IronPdfGlobalConfig;
config.setConfig({
    licenseKey:
      "",
  });
// Create an HTTP server
const server = http.createServer();
// Create a Faye server
const bayeux = new faye.NodeAdapter({ mount: '/faye', timeout: 45 });
// Attach the Faye server to the HTTP server
bayeux.attach(server);
// Handle Faye client connections
bayeux.on('handshake', function(clientId) {
    console.log(`Client connected: ${clientId}`);
});
// Handle incoming messages for PDF generation
bayeux.on('publish', async function (clientId, channel, data) {
    if (channel === '/generate_pdf') {
        console.log(`Received PDF generation request from client ${clientId}: ${data.htmlContent}`);
        // Generate PDF using IronPDF
        let pdfData=await generatePdf(data.htmlContent)
        var base64String = btoa(String.fromCharCode.apply(null, new Uint8Array(pdfData)));
        bayeux.getClient().publish(`/pdf_result/${clientId}`, { pdfData: base64String });
    }
});
// 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
const http = require( 'http');
const faye = require( 'faye');
const IronPdf = require( '@ironsoftware/ironpdf');
Dim config = IronPdf.IronPdfGlobalConfig
config.setConfig({ licenseKey:= ""})
' Create an HTTP server
const server = http.createServer()
' Create a Faye server
const bayeux = New faye.NodeAdapter({ mount: '/faye', timeout: 45 });
' Attach the Faye server to the HTTP server
bayeux.attach(server)
' Handle Faye client connections
bayeux.on( 'handshake', @function(clientId) { console.log(`Client connected: ${clientId}`); });
' Handle incoming messages for PDF generation
bayeux.on( 'publish', async @function(clientId, channel, data) { if(channel === '/generate_pdf') { console.log(`Received PDF generation request from client ${clientId}: ${data.htmlContent}`); let pdfData=await generatePdf(data.htmlContent) var base64String = btoa(String.fromCharCode.apply(Nothing, New Uint8Array(pdfData))); bayeux.getClient().publish(`/pdf_result/${clientId}`, { pdfData: base64String }); } });
' Function to generate PDF using IronPDF
const generatePdf = Async Function(htmlContent)
	const pdfDocument = IronPdf.PdfDocument
	Dim result As let = (Await pdfDocument.fromHtml(htmlContent))
	const pdfBuffer = Await result.saveAsBuffer()
	Return pdfBuffer
End Function
' Start the HTTP server
const PORT = 3000
server.listen(PORT, [function]() { console.log(`Server listening on port ${PORT}`); })
VB   C#

faye NPM(Cómo funciona para desarrolladores): Figura 5 - Faye con salida IronPDF

Configuración del lado del cliente

Configure Faye en el lado del cliente para interactuar con el servidor y enviar solicitudes para la creación de PDF:

<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Faye + IronPDF Example</title>
</head>
<body>
    <button onclick="generatePdf()">Generate PDF</button>
    <script src="https://cdn.jsdelivr.net/npm/faye/browser/faye-browser.min.js"></script>
    <script>
        const client = new Faye.Client('http://localhost:3000/faye');
    //simple publish subscribe messaging
        client.subscribe('/pdf_result/*', function(message) {
            console.log('PDF received:', message);
            displayPdf(message.pdfData);
        });
        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
            client.publish('/generate_pdf', { htmlContent: htmlContent });
        }
        function displayPdf(pdfData) {
            // Example: Display or download PDF data received from server
            const pdfBlob = new Blob([Uint8Array.from(atob(pdfData), c => c.charCodeAt(0))], { 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>Faye + IronPDF Example</title>
</head>
<body>
    <button onclick="generatePdf()">Generate PDF</button>
    <script src="https://cdn.jsdelivr.net/npm/faye/browser/faye-browser.min.js"></script>
    <script>
        const client = new Faye.Client('http://localhost:3000/faye');
    //simple publish subscribe messaging
        client.subscribe('/pdf_result/*', function(message) {
            console.log('PDF received:', message);
            displayPdf(message.pdfData);
        });
        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
            client.publish('/generate_pdf', { htmlContent: htmlContent });
        }
        function displayPdf(pdfData) {
            // Example: Display or download PDF data received from server
            const pdfBlob = new Blob([Uint8Array.from(atob(pdfData), c => c.charCodeAt(0))], { type: 'application/pdf' });
            const pdfUrl = URL.createObjectURL(pdfBlob);
            window.open(pdfUrl, '_blank');
        }
    </script>
</body>
</html>
index.html -= 1
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <!-- index.html -- > <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> Faye + IronPDF Example</title> </head> <body> <button onclick="generatePdf()"> Generate PDF</button> <script src="https://cdn.jsdelivr.net/npm/faye/browser/faye-browser.min.js"></script> <script> const client = new Faye.Client(
"https://cdn.jsdelivr.net/npm/faye/browser/faye-browser.min.js"></script> (Of script) const client = New Faye.Client( 'http: client.subscribe('/pdf_result '', function(message) {
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <! index.html  > <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> Faye + IronPDF Example</title> </head> <body> <button onclick="generatePdf()"> Generate PDF</button> <script src="https://cdn.jsdelivr.net/npm/faye/browser/faye-browser.min.js"></script> <script> const client
"generatePdf()"> Generate PDF</button> <script src="https://cdn.jsdelivr.net/npm/faye/browser/faye-browser.min.js"></script> (Of script) const client
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <! index.html  > <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> Faye + IronPDF Example</title> </head> <body> <button onclick="generatePdf()"> Generate PDF</button> <script src
"UTF-8"> (Of title) Faye + IronPDF Example</title> </head> (Of body) <button onclick="generatePdf()"> Generate PDF</button> <script src
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <! index.html  > <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> Faye + IronPDF Example</title> </head> <body> <button onclick
"en"> (Of head) <meta charset="UTF-8"> (Of title) Faye + IronPDF Example</title> </head> (Of body) <button onclick
<(Not index.html) > <(Not DOCTYPE) html> <html lang="en"> (Of head) <meta charset
index.html -= 1
'            console.log('PDF received:', message);
'            displayPdf(message.pdfData);
'        });
'        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
'            client.publish('/generate_pdf', { htmlContent: htmlContent });
'        }
'        function displayPdf(pdfData) {
'            // Example: Display or download PDF data received from server
'            const pdfBlob = new Blob([Uint8Array.from(atob(pdfData), c => c.charCodeAt(0))], { type: 'application/pdf' });
'            const pdfUrl = URL.createObjectURL(pdfBlob);
'            window.open(pdfUrl, '_blank');
'        }
'    </script>
'</body>
'</html>
VB   C#

Servidor: Un servidor Faye(bayeux) está integrado por el servidor Node.js, que también configura un servidor HTTP. En el canal /generate_pdf, vigila los mensajes entrantes y las conexiones de los clientes. Al recibir una solicitud deGeneración de PDF, convierte la información HTML suministrada a un PDF utilizando IronPDF y devuelve los datos PDF completados, un mensaje fácil de usar para el cliente.

faye NPM(Cómo funciona para desarrolladores): Figura 6 - Salida de datos PDF

Cliente: Para obtener los datos PDF generados, el cliente del navegador crea una conexión Faye(cliente) al servidor y se suscribe al canal /pdf_result/*. El botón "Generar PDF" hace que el usuario envíe una solicitud de contenido HTML al servidor, que éste utiliza para generar un PDF utilizando un cliente.release('/generate\pdf',{ htmlContenido: htmlContenido}). Muestra o descarga el PDF después de recibir los datos del mismo.

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

Conclusión

Al integrar Faye con IronPDF, se ofrece una solución fiable para las aplicaciones web contemporáneas al combinar las ventajas de la creación dinámica de PDF y la mensajería en tiempo real. La comunicación instantánea cliente-servidor es posible gracias al sistema de mensajería pub/sub de Faye, que admite aplicaciones que necesitan actualizaciones en tiempo real, como el seguimiento de errores, las notificaciones y las capacidades de trabajo en equipo. Por el contrario, IronPDF permite la creación, modificación y conversión programática de documentos PDF, posibilitando la generación dinámica de informes, facturas y otros documentos en respuesta a las entradas del usuario o a datos en tiempo real.

Estas tecnologías pueden integrarse para proporcionar material creado dinámicamente y comentarios instantáneos, lo que puede mejorar la experiencia del usuario. Por ejemplo, los consumidores no tienen que esperar a un proceso por lotes ni actualizar el sitio web para recibir una solicitud de informe en PDF que se procesa al instante. Gracias a esta interacción fluida, las aplicaciones web son más ágiles y eficaces, lo que aumenta su interactividad y facilidad de uso.

Mediante la integración de IronPDF yIronSoftwarepor ejemplo, podemos añadir OCR, escaneado de códigos de barras, salida PDF, interacción con Excel y muchas otras funcionalidades a su caja de herramientas de desarrollo de aplicaciones Node.js, aumentando su utilidad. La amplia biblioteca de plugins compatibles con la comunidad y las tecnologías altamente configurables de IronSoftware permiten a los desarrolladores crear funciones y aplicaciones web con mayor rapidez.

Antes de decidirse a comprar, los desarrolladores pueden aprovechar las muchas características de IronPDF con una licencia de prueba gratuita y una variedad de muestras de código fuente de la empresa. Consulte la página de licencia para obtener más información sobre la licencia perpetua de IronPDF. Vaya a la página de documentación del proyecto para obtener más información sobre cómo empezar a utilizar IronPDF.

< ANTERIOR
react hook form NPM (Cómo funciona para desarrolladores)
SIGUIENTE >
Koa node js (Cómo funciona para desarrolladores)

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

Instalación gratuita de npm Ver licencias >