Ir para o conteúdo do rodapé
AJUDA DO NODE

sockjs NPM (Como funciona para desenvolvedores)

SockJS e IronPDF desempenham papéis diferentes, mas complementares, na construção de aplicações online. Um pacote JavaScript chamado SockJS oferece uma API HTTP bidirecional para comunicação cliente-servidor que se assemelha ao WebSocket. Isso possibilita que navegadores e servidores da web se comuniquem em tempo real e por meio de eventos, permitindo o uso de aplicativos como salas de bate-papo, notícias ao vivo e ferramentas de trabalho em equipe. No entanto, em ambientes Node.js , o IronPDF é uma poderosa biblioteca JavaScript que permite criar e modificar documentos PDF programaticamente.

Enquanto o IronPDF permite a criação e o gerenciamento dinâmico de documentos PDF, o cliente SockJS gerencia a troca de dados em tempo real e os recursos de colaboração em aplicativos online por meio de um canal de comunicação entre domínios. Ao integrar o servidor SockJS com o IronPDF, os desenvolvedores podem facilmente gerar e disponibilizar documentos PDF com base em dados dinâmicos ou interações do usuário, aprimorando seus aplicativos com alterações em tempo real. Com essa combinação, os desenvolvedores podem criar aplicativos online sofisticados que suportam uma variedade de casos de uso, incluindo aplicativos com uso intensivo de documentos e plataformas colaborativas, utilizando tanto a comunicação em tempo real quanto a criação dinâmica de PDFs.

O que é o SockJS NPM?

SockJS é uma biblioteca JavaScript do lado do navegador que facilita a comunicação bidirecional em tempo real entre clientes web e servidores. Ele abstrai o WebSocket e oferece um mecanismo de fallback para protocolos de transporte alternativos, como HTTP long-polling e streaming XHR, garantindo compatibilidade com diversos navegadores e ambientes web. Ela fornece uma API JavaScript simples para estabelecer e gerenciar conexões e lidar com eventos como abertura de conexão, recebimento de mensagens e fechamento. Além disso, o SockJS inclui um cliente de linha de comando para fins de teste e depuração, tornando-o versátil tanto para ambientes de desenvolvimento quanto de produção. De forma geral, o objeto JavaScript SockJS simplifica a implementação de recursos em tempo real em aplicações web, oferecendo suporte a canais de comunicação escaláveis ​​e responsivos.

sockjs NPM (Como funciona para desenvolvedores): Figura 1 - SockJS

Principais características do SockJS

Compatibilidade entre navegadores

O SockJS garante comportamento e funcionalidade consistentes em diversos navegadores e ambientes web.

Mecanismo de Contingência

Caso as conexões WebSocket estejam indisponíveis ou falhem, o SockJS pode alternar de forma transparente para outros protocolos de transporte, como HTTP long-polling, streaming XHR ou até mesmo polling JSONP.

Comunicação em tempo real

Ele permite que aplicativos do lado do servidor (geralmente usando Node.js ou outras tecnologias do lado do servidor) e aplicativos JavaScript do lado do cliente (executados em navegadores da web) se comuniquem em tempo real e de forma orientada a eventos.

Facilidade de uso

Como o SockJS oferece uma API simples equivalente ao WebSocket, os desenvolvedores podem facilmente incluí-lo e utilizá-lo em seus projetos.

Escalabilidade

O SockJS facilita o desenvolvimento de aplicativos escaláveis ​​que podem gerenciar inúmeras conexões simultâneas e uma variedade de situações de rede, oferecendo suporte a múltiplos protocolos de transporte e técnicas de contingência.

Facilidade de integração

Isso facilita a implementação de recursos em tempo real, fornecendo uma API simples que os desenvolvedores podem incorporar em seus aplicativos da web sem a necessidade de programação de rede complexa de baixo nível.

Abstração do Protocolo de Transporte:

WebSocket, HTTP long-polling e outros protocolos de transporte subjacentes são abstraídos pelo SockJS. Graças à sua adaptabilidade, a comunicação confiável é garantida mesmo em situações onde as conexões WebSocket são restritas ou indisponíveis.

Criar e configurar o SockJS

Normalmente, é necessário configurar o SockJS tanto no lado do cliente (no navegador) quanto no lado do servidor (usando um navegador ou framework de servidor como o Node.js) para construí-lo e configurá-lo para comunicação em tempo real em uma aplicação online. A seguir, um guia básico de como criar e configurar o SockJS:

Instale o SockJS

O SockJS pode ser instalado usando o NPM ou incluído diretamente via CDN:

npm install sockjs-client
npm install sockjs-client
SHELL

Inclua o SockJS no seu HTML.

Inclua a biblioteca JavaScript SockJS no arquivo HTML que você criar:

<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 conexão SockJS

Crie uma instância do SockJS no seu arquivo JavaScript (app.js ou similar) e conecte-se ao seu 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

A URL do seu endpoint WebSocket do lado do servidor deve ser usada em vez de "http://localhost:3000/socket".

sockjs NPM (Como funciona para desenvolvedores): Figura 2 - Saída de conexão do SockJS

Configuração do lado do servidor

Instale o SockJS-Node

Para instalar o pacote SockJS-Node, use o npm:

npm install sockjs
npm install sockjs
SHELL

Configurar servidor SockJS

No seu servidor Node.js , configure o 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

Certifique-se de que o código do lado do servidor esteja personalizado para atender aos requisitos do seu aplicativo e funcione com a estrutura ou configuração do servidor que você já possui.

sockjs NPM (Como funciona para desenvolvedores): Figura 3 - Saída de configuração do servidor SockJS em conformidade

Solicitações de origem cruzada (CORS): Certifique-se de que seu servidor lide com as configurações de CORS de forma eficaz se o servidor e o cliente estiverem em domínios diferentes.

Tratamento de erros: Implemente medidas de tratamento de erros e segurança (como autenticação e autorização) conforme as especificações da sua aplicação.

Implantação: Configure o HTTPS para conexões seguras e configure o SockJS e seu servidor para ambientes de implantação.

Essa configuração oferece uma base fundamental para estabelecer comunicação em tempo real entre um cliente web e um servidor web usando SockJS. Dependendo dos requisitos e da arquitetura da sua aplicação específica, podem ser necessários ajustes.

Começando

Configurar uma aplicação web que utilize os recursos de comunicação em tempo real do SockJS e integre o IronPDF para a criação dinâmica de PDFs é o primeiro passo para começar a usar o SockJS e o IronPDF. Aqui está um guia para começar:

O que é o IronPDF?

Uma poderosa ferramenta Node.js chamada IronPDF foi criada para transformar dados HTML em arquivos PDF de altíssima qualidade. Sem comprometer o conteúdo original da web, ele agiliza o processo de conversão de arquivos HTML, CSS e outros arquivos JavaScript em PDFs formatados corretamente. Esta é uma ferramenta muito útil para aplicações web que precisam gerar documentos dinâmicos e imprimíveis, como relatórios, faturas e certificados.

Configurações de página personalizáveis, cabeçalhos, rodapés e a possibilidade de adicionar fontes e imagens são apenas algumas das funcionalidades do IronPDF. Ele consegue lidar com layouts e estilos complexos para garantir que cada PDF de teste gerado atenda aos requisitos. Além disso, o IronPDF gerencia a execução de JavaScript dentro do HTML, permitindo a renderização precisa de conteúdo dinâmico e interativo.

sockjs NPM (Como funciona para desenvolvedores): Figura 4 - IronPDF

Funcionalidades do IronPDF

1. Geração de PDF a partir de HTML

Converter JavaScript, HTML e CSS para PDF. Suporta consultas de mídia e design responsivo, dois padrões web contemporâneos. Útil para decorar dinamicamente relatórios em PDF, faturas e documentos com HTML e CSS.

2. Edição de PDF

É possível adicionar texto, imagens e outros conteúdos a arquivos PDF preexistentes. Extrair texto e imagens de arquivos PDF. Combine vários PDFs em um único arquivo. Divida arquivos PDF em vários documentos separados. Inclua marcas d'água, anotações, cabeçalhos e rodapés.

3. Desempenho e Confiabilidade

Alto desempenho e confiabilidade são qualidades desejáveis ​​em projetos de ambientes industriais. Gerencia grandes conjuntos de documentos com facilidade.

Instale o IronPDF

Instale o pacote IronPDF para obter as ferramentas necessárias para trabalhar com PDFs em projetos Node.js Execute o seguinte comando:

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

Combine SockJS com IronPDF

Configure o SockJS no seu servidor Node.js para lidar com solicitações de geração de PDF e gerenciar conexões 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

Configuração do lado do cliente

Configure o SockJS no lado do cliente para interagir com o servidor e enviar solicitações para gerar PDFs.


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>SockJS + IronPDF Example</title>
</head>
<body>
    <button onclick="generatePdf()">Generate PDF</button>

    <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>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>SockJS + IronPDF Example</title>
</head>
<body>
    <button onclick="generatePdf()">Generate PDF</button>

    <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 do servidor: O servidor Node.js configura um servidor SockJS (sockjsServer) e escuta conexões no caminho /socket. Ele usa o IronPDF (IronPdf.PdfDocument) para invocar a função generatePdf() a fim de lidar com mensagens recebidas (solicitações de geração de PDF). Após gerar o PDF, ele usa a conexão SockJS para enviar os dados do PDF codificados em base64 de volta para o cliente.

sockjs NPM (Como funciona para desenvolvedores): Figura 5 - Saída do código-fonte do cliente SockJS

Lado do cliente: O cliente se conecta ao servidor por meio de uma conexão SockJS (sock) e escuta eventos como onopen, onmessage e onclose. O usuário usa sock.send(htmlContent) para enviar conteúdo HTML (htmlContent) para o servidor para geração de PDF quando clica no botão "Gerar PDF". Exibe ou baixa o PDF, após obter os dados do PDF do servidor (sock.onmessage).

sockjs NPM (Como funciona para desenvolvedores): Figura 6 - Saída do lado do cliente

Abaixo está o resultado gerado pelo código.

sockjs NPM (Como funciona para desenvolvedores): Figura 7 - Saída em PDF

Conclusão

No desenvolvimento de aplicações web, cria-se uma forte sinergia quando o SockJS é usado para comunicação em tempo real e o IronPDF para geração dinâmica de PDFs. Com o SockJS, a comunicação bidirecional entre clientes e servidores torna-se fácil, possibilitando recursos como colaboração interativa e atualizações em tempo real. No entanto, o IronPDF oferece aos programadores a capacidade de criar e modificar documentos PDF programaticamente. Ele pode até converter dinamicamente texto HTML em PDFs.

A integração dessas tecnologias torna possível a criação de aplicações web complexas que podem gerar documentos PDF instantaneamente em resposta à entrada do usuário ou a atualizações de dados em tempo real. Aplicações que exigem geração de documentos em tempo real, edição em grupo ou funcionalidades de geração de relatórios interativos acharão essa integração especialmente útil. Ao utilizar o SockJS para atualizações instantâneas e o IronPDF para criação dinâmica de PDFs, os desenvolvedores podem otimizar a experiência do usuário, os fluxos de trabalho e fornecer soluções robustas que atendam a uma variedade de requisitos de negócios para qualquer usuário sério do SockJS.

Podemos aumentar a utilidade do seu conjunto de ferramentas de desenvolvimento de aplicativos Node.js utilizando o IronPDF para adicionar OCR, leitura de código de barras, geração de PDFs, interação com o Excel e muitos outros recursos. Os sistemas altamente configuráveis ​​da Iron Software e a extensa biblioteca de plugins com suporte da comunidade permitem que os desenvolvedores criem recursos e aplicativos da web mais rapidamente.

Os desenvolvedores podem usar os diversos recursos do IronPDF com uma licença de avaliação gratuita e uma variedade de exemplos de código fornecidos pela empresa antes de optarem pela compra. Para obter mais informações sobre o licenciamento perpétuo do IronPDF, visite a página de licenças. Para obter mais instruções sobre como começar a usar o IronPDF, visite a página de documentação.

Darrius Serrant
Engenheiro de Software Full Stack (WebOps)

Darrius Serrant é bacharel em Ciência da Computação pela Universidade de Miami e trabalha como Engenheiro de Marketing WebOps Full Stack na Iron Software. Atraído por programação desde jovem, ele via a computação como algo misterioso e acessível ao mesmo tempo, tornando-a o meio ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim