Altbilgi içeriğine atla
NODE YARDıM

sockjs NPM (Geliştiriciler İçin Nasıl Çalışır)

SockJS ve IronPDF, çevrimiçi uygulamalar oluşturulurken farklı fakat tamamlayıcı rollere sahiptir. SockJS adlı bir JavaScript paketi, doğrudan HTTP API sunar, bu da WebSockets'e benzer bir istemci-sunucu iletişimi sağlar. Bu, sohbet odaları, canlı haberler ve iş birliği araçları gibi uygulamaların kullanımı için web tarayıcıları ve sunucular arasında gerçek zamanlı ve olay bazlı iletişime izin verir. Bununla birlikte, Node.js ortamlarında IronPDF, programatik bir şekilde PDF belgeleri üretmek ve düzenlemek için güçlü bir JavaScript kütüphanesidir.

IronPDF, dinamik olarak PDF belgeleri oluşturup yönetmek sağlarken, SockJS istemcisi çevrimiçi uygulamalarda gerçek zamanlı veri değişimi ve iş birliği özelliklerini bir çapraz alan iletişim kanalı aracılığıyla yönetir. SockJS sunucu karşıtını IronPDF ile entegre ederek, geliştiriciler dinamik veri veya kullanıcı etkileşimlerine dayalı olarak kolayca PDF belgeleri oluşturabilir ve sunarken uygulamalarına gerçek zamanlı değişiklikler ekleyebilirler. Bu kombinasyonla, geliştiriciler hem gerçek zamanlı iletişimi hem de dinamik PDF oluşturmayı kullanarak belge yoğun uygulamalar ve iş birliğini destekleyen platformlar gibi çeşitli vaka senaryolarını destekleyen sofistike çevrimiçi uygulamalar tasarlayabilir.

SockJS NPM Nedir?

SockJS, web müşterileri ve sunucuları arasında gerçek zamanlı, çift yönlü iletişimi kolaylaştıran tarayıcı tarafı bir JavaScript kütüphanesidir. WebSocket'i soyutlar ve HTTP uzun-sorgulama ve XHR akışı gibi alternatif taşıma protokollerine alternatif bir mekanizma sunar, çeşitli web tarayıcıları ve ortamlarla uyumluluğu sağlar. Bağlantı açılışı, mesaj alımı ve kapanış gibi olayların yönetilmesine ve bağlantıların kurulmasına yönelik basit bir JavaScript API sunar. Ayrıca, SockJS, geliştirme ve üretim ortamları için onu çok yönlü hale getirerek test ve hata ayıklama amaçlı bir komut satırı istemcisi içerir. Genel olarak, SockJS JavaScript nesnesi, ölçeklenebilir ve duyarlı iletişim kanallarını destekleyerek web uygulamalarında gerçek zamanlı özelliklerin uygulanmasını basitleştirir.

sockjs NPM (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - SockJS

SockJS'nin Ana Özellikleri

Tarayıcılar Arası Uyumluluk

SockJS, birçok web tarayıcısı ve ortamda tutarlı davranış ve işlevsellik sağlar.

Geri Dönüş Mekanizması

WebSocket bağlantıları kullanılamaz veya başarısız olursa, SockJS, HTTP uzun yoklama, XHR akış veya hatta JSONP yoklama gibi diğer taşıma protokollerine şeffaf bir şekilde geçebilir.

Gerçek Zamanlı İletişim

Sunucu tarafı uygulamaları (genellikle Node.js veya diğer sunucu tarafı teknolojilerini kullanarak) ve istemci tarafı JavaScript uygulamaları (web tarayıcılarında çalışan) gerçek zamanlı ve olay güdümlü bir şekilde iletişim kurabilir.

Kullanım Kolaylığı

SockJS, WebSocket'e denk bir basit API sunduğu için, geliştiriciler projelerine kolayca ekleyebilir ve kullanabilir.

Ölçeklenebilirlik

SockJS, birden fazla taşıma protokolünü ve geri dönüş tekniklerini destekleyerek, çok sayıda eşzamanlı bağlantıyı ve çeşitli ağ durumlarını yönetebilen ölçeklenebilir uygulamaların geliştirilmesini kolaylaştırır.

Entegrasyon Kolaylığı

Geliştiricilerin karmaşık düşük seviyeli ağ programlamasına ihtiyaç duymadan web uygulamalarına entegre edebileceği basit bir API sağlayarak gerçek zamanlı özelliklerin uygulanmasını kolaylaştırır.

Taşıma Protokolü Soyutlama:

SockJS, WebSocket, HTTP uzun yoklama ve diğer temel taşıma protokollerini soyutlar. Uyarlanabilirliği sayesinde, WebSocket bağlantılarının kısıtlandığı veya kullanılamadığı durumlarda bile güvenilir iletişim sağlanır.

SockJS'yi Oluşturun ve Yapılandırın

Çevrimiçi bir uygulamada gerçek zamanlı iletişim için SockJS'yi oluşturmak ve yapılandırmak için genellikle istemci tarafında (web tarayıcınızda) ve sunucu tarafında (Node.js gibi bir tarayıcı veya sunucu çerçevesi kullanarak) SockJS'yi kurmanız gerekir. Aşağıda, SockJS'yi oluşturma ve yapılandırma için temel bir kılavuz bulunmaktadır:

SockJS'yi Yükleyin

SockJS, NPM kullanılarak veya doğrudan bir CDN üzerinden eklenerek yüklenebilir:

npm install sockjs-client
npm install sockjs-client
SHELL

SockJS'yi HTML'nize Dahil Edin

Oluşturduğunuz HTML dosyasına SockJS JavaScript kütüphanesini ekleyin:

<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

SockJS Bağlantısını Başlatın

JavaScript dosyanızda (app.js veya benzeri bir şeyde) bir SockJS örneği oluşturun ve sunucunuza bağlanın:

<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

Sunucu tarafı WebSocket uç noktanızın URL'si, "http://localhost:3000/socket" yerine kullanılmalıdır.

sockjs NPM (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - SockJS Bağlantı Çıktısı

Sunucu Tarafı Kurulumu

SockJS-Node'u Yükleyin

SockJS-Node paketini yüklemek için npm kullanın:

npm install sockjs
npm install sockjs
SHELL

SockJS Sunucusunu Yapılandırın

Node.js sunucunuzda SockJS'yi yapılandırın:

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

Sunucu tarafı kodunun, uygulamanızın gereksinimlerini karşılayacak şekilde özelleştirildiğinden ve halihazırda sahip olduğunuz sunucu çerçevesi veya yapılandırması ile uyumlu olduğundan emin olun.

sockjs NPM (Geliştiriciler İçin Nasıl Çalışır): Şekil 3 - SockJS Sunucu uyumlu yapılandırma çıktısı

Alanlar Arası İstekler (CORS): Sunucunuz ve istemciniz farklı alanlarda ise, sunucunuzun CORS ayarlarını etkili bir şekilde yönettiğinden emin olun.

Hata Yönetimi: Uygulamanızın gereksinimlerine göre hata yönetimi ve güvenlik önlemleri (kimlik doğrulama ve yetkilendirme gibi) uygulayın.

Dağıtım: Güvenli bağlantılar için HTTPS'yi ayarlayın ve SockJS'yi ve sunucunuzu dağıtım ortamları için yapılandırın.

Bu yapılandırma, bir web istemcisi ile bir web sunucusu arasında SockJS kullanarak gerçek zamanlı iletişim kurmak için temel bir temel sağlar. Belirli uygulamanızın gereksinimlerine ve mimarisine bağlı olarak ayarlamalar gerekebilir.

Başlarken

SockJS'nin gerçek zamanlı iletişim yeteneklerinden yararlanan ve dinamik PDF oluşturma için IronPDF'yi entegre eden bir web uygulaması kurmak, SockJS ve IronPDF ile başlamanın ilk adımıdır. İşte başlangıç için bir kılavuz:

IronPDF nedir?

IronPDF olarak adlandırılan güçlü bir Node.js aracı, HTML verilerini olağanüstü yüksek kaliteli PDF dosyalarına dönüştürmek için tasarlanmıştır. [72] Orijinal web içeriğinden ödün vermeden, HTML, CSS ve diğer JavaScript dosyalarını doğru şekilde biçimlendirilmiş PDF'lere dönüştürme sürecini hızlandırır. Raporlar, faturalar ve sertifikalar gibi dinamik, yazdırılabilir belgeler oluşturması gereken web uygulamaları için çok faydalı bir araçtır.

[74] IronPDF'nin sayfa ayarları, sayfa başlıkları, sayfa altlıkları, yazı tipleri ve görüntüler ekleme yeteneği gibi özelleştirilebilir birçok özelliği vardır. Her bir test PDF çıktısının gereksinimlere uygun olmasını sağlamak için karmaşık yerleşim ve stilleri işleyebilir. Dahası, IronPDF, JavaScript'in HTML içinde çalışmasını yöneterek, dinamik ve etkileşimli içeriğin hassas bir şekilde işlenmesini sağlar.

sockjs NPM (Geliştiriciler İçin Nasıl Çalışır): Şekil 4 - IronPDF

IronPDF'nin Özellikleri

1. HTML'den PDF Oluşturma

[79] JavaScript, HTML ve CSS'yi PDF'ye dönüştürün. Modern web standartlarının iki önemli özelliği olan medya sorgularını ve duyarlı tasarımı destekler. HTML ve CSS ile PDF raporları, faturalar ve belgeleri dinamik bir şekilde dekore etmek için kullanışlıdır.

2. PDF Düzenleme

Mevcut PDF'lere metin, resim ve diğer içerikler eklenebilir. PDF dosyalarından metin ve resim çıkarın. Birden fazla PDF'yi tek bir dosyada birleştirin. PDF dosyalarını birden fazla ayrı belgeye bölün. [85] Filigranlar, yorumlamalar, sayfa üst bilgileri ve alt bilgiler dahil edin.

3. Performans ve Güvenilirlik

[87] Endüstriyel ortamlarda istenen yüksek performans ve güvenilirlik tasarım nitelikleridir. [88] Büyük belge gruplarını kolaylıkla yönetir.

IronPDF Yükleyin

[89] Node.js projelerinde PDF'lerle çalışmak için ihtiyaç duyduğunuz araçları almak için IronPDF paketini kurun. Aşağıdaki komutu çalıştırın:

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

SockJS'yi IronPDF ile Birleştir

Node.js sunucunuzda PDF oluşturma isteklerini işlemek ve istemci bağlantılarını yönetmek için SockJS'yi yapılandırın:

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

İstemci Tarafı Kurulum

Sunucu ile etkileşime geçmek ve PDF oluşturma isteklerini göndermek için istemci tarafında SockJS'yi yapılandırın.


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

Sunucu Tarafı: Node.js sunucusu bir SockJS sunucusunu yapılandırır (sockjsServer) ve /socket yolu üzerinde bağlantıları dinler. Gelen mesajları (PDF oluşturma taleplerini) işlemek için generatePdf() fonksiyonunu çağırmak amacıyla IronPDF (IronPdf.PdfDocument) kullanır. PDF'i oluşturduktan sonra, base64 kodlu PDF verilerini istemciye geri göndermek için SockJS bağlantısını kullanır.

sockjs NPM (Geliştiriciler İçin Nasıl Çalışır): Şekil 5 - SockJS İstemci Kaynak Kodu Çıktısı

İstemci Tarafı: İstemci, SockJS bağlantısı (sock) aracılığıyla sunucuya bağlanır ve onopen, onmessage ve onclose gibi olayları dinler. Kullanıcı, "PDF Oluştur" butonuna bastığında HTML içeriğini (htmlContent) sunucuya PDF oluşturma için göndermek üzere sock.send(htmlContent) kullanır. PDF verilerini sunucudan aldıktan sonra (sock.onmessage) PDF'yi gösterir veya indirir.

sockjs NPM (Geliştiriciler İçin Nasıl Çalışır): Şekil 6 - İstemci Tarafı Çıktısı

Aşağıda koddan üretilen çıktı bulunur.

sockjs NPM (Geliştiriciler İçin Nasıl Çalışır): Şekil 7 - PDF Çıktısı

Sonuç

Web uygulama geliştirmede, gerçek zamanlı iletişim için SockJS ve dinamik PDF üretimi için IronPDF kullanıldığında güçlü bir sinerji oluşur. SockJS ile, istemciler ve sunucular arasında çift yönlü iletişim kolay hale gelir ve etkileşimli işbirliği ve gerçek zamanlı güncellemeler gibi özelliklere olanak tanır. Ancak, IronPDF programcıların PDF belgelerini programatik olarak oluşturmasını ve düzenlemesini sağlar. Hatta HTML metnini dinamik bir şekilde PDF'lere dönüştürebilir.

Bu teknolojilerin entegrasyonu, kullanıcı girdisine veya gerçek zamanlı veri güncellemelerine yanıt olarak anında PDF belgeleri oluşturabilen karmaşık web uygulamalarını mümkün kılar. Gerçek zamanlı belge üretimi, grup düzenleme veya etkileşimli raporlama işlevsellikleri gerektiren uygulamalar bu entegrasyondan özellikle fayda sağlayacaktır. SockJS'yi anlık güncellemeler ve IronPDF'yi dinamik PDF oluşturma için kullanarak, geliştiriciler kullanıcı deneyimini optimize edebilir, iş akışlarını optimize edebilir ve herhangi bir ciddi SockJS kullanıcısı için bir dizi iş gereksinimini karşılayan sağlam çözümler sunabilir.

IronPDF kullanarak OCR, barkod tarama, PDF üretimi, Excel etkileşimi ve daha birçok özelliği ekleyerek Node.js uygulama geliştirme araç setinizi faydalı hale getirebiliriz. Iron Software'ın son derece özelleştirilebilir sistemleri ve topluluk destekli geniş eklenti kütüphanesi, geliştiricilerin özellikleri ve web uygulamalarını daha hızlı oluşturmasını sağlar.

Geliştiriciler, IronPDF'nin birçok özelliğini ücretsiz deneme lisansı ve firmadan bir dizi kod örneğiyle kullanabilir ve sonra satın almaya karar verebilir. IronPDF'nin sürekli lisanslaması hakkında daha fazla bilgi için lisans sayfasını ziyaret edin. IronPDF'yi kullanmaya başlama hakkında daha fazla talimat için dökümantasyon sayfasını ziyaret edin.

Darrius Serrant
Tam Yığın Yazılım Mühendisi (WebOps)

Darrius Serrant, Miami Üniversitesi'nden Bilgisayar Bilimleri lisans derecesine sahiptir ve Iron Software'de Tam Yığın WebOps Pazarlama Mühendisi olarak çalışmaktadır. Küçük yaşlardan itibaren kodlamaya ilgi duyan Darrius, bilişimi hem gizemli hem de erişilebilir buldu ve onu yaratıcılık ve problem çö...

Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara