sockjs NPM (jak to działa dla programistów)
SockJS i IronPDF odgrywają różne, ale uzupełniające się role w tworzeniu aplikacji internetowych. Pakiet JavaScript o nazwie SockJS oferuje dwukierunkowy interfejs API HTTP do komunikacji klient-serwer, który przypomina WebSockets. Umożliwia to komunikację między przeglądarkami internetowymi a serwerami w czasie rzeczywistym oraz poprzez zdarzenia, umożliwiając korzystanie z aplikacji takich jak czaty, serwisy informacyjne na żywo oraz narzędzia do pracy zespołowej. Jednak w środowisku Node.js IronPDF jest potężną biblioteką JavaScript, która umożliwia programowe tworzenie i modyfikowanie dokumentów PDF.
Podczas gdy IronPDF umożliwia dynamiczne tworzenie dokumentów PDF i zarządzanie nimi, klient SockJS zarządza wymianą danych w czasie rzeczywistym oraz funkcjami współpracy w aplikacjach internetowych poprzez kanał komunikacji międzydomenowej. Dzięki integracji serwerowej wersji SockJS z IronPDF programiści mogą z łatwością generować i udostępniać dokumenty PDF na podstawie danych dynamicznych lub interakcji użytkownika, jednocześnie wzbogacając swoje aplikacje o zmiany w czasie rzeczywistym. Dzięki tej kombinacji programiści mogą projektować zaawansowane aplikacje internetowe obsługujące różnorodne scenariusze użytkowania, w tym aplikacje intensywnie wykorzystujące dokumenty oraz platformy współpracy, wykorzystując zarówno komunikację w czasie rzeczywistym, jak i dynamiczne tworzenie plików PDF.
Czym jest SockJS NPM?
SockJS to biblioteka JavaScript działająca po stronie przeglądarki, która ułatwia dwukierunkową komunikację w czasie rzeczywistym między klientami internetowymi a serwerami. Abstrahuje WebSocket i oferuje mechanizm awaryjny dla alternatywnych protokołów transportowych, takich jak długie odpytywanie HTTP i strumieniowanie XHR, zapewniając kompatybilność w różnych przeglądarkach internetowych i srodowiskach. Zapewnia prosty interfejs API JavaScript do nawiązywania połączeń i zarządzania nimi oraz obsługi zdarzeń, takich jak otwarcie połączenia, odbiór wiadomości i zamknięcie. Ponadto SockJS zawiera klienta wiersza poleceń do testowania i debugowania, dzięki czemu jest wszechstronny zarówno w środowiskach programistycznych, jak i produkcyjnych. Ogólnie rzecz biorąc, obiekt JavaScript SockJS upraszcza wdrażanie funkcji działających w czasie rzeczywistym w aplikacjach internetowych, obsługując skalowalne i responsywne kanały komunikacyjne.

Kluczowe funkcje SockJS
Kompatybilność z różnymi przeglądarkami
SockJS zapewnia spójne działanie i funkcjonalność w wielu przeglądarkach internetowych i środowiskach.
Mechanizm awaryjny
Jeśli połączenia WebSocket są niedostępne lub kończą się niepowodzeniem, SockJS może w sposób przejrzysty przełączyć się na inne protokoły transportowe, takie jak długie odpytywanie HTTP, strumieniowanie XHR, a nawet odpytywanie JSONP.
Komunikacja w czasie rzeczywistym
Umożliwia to aplikacjom po stronie serwera (zwykle wykorzystującym Node.js lub inne technologie po stronie serwera) oraz aplikacjom JavaScript po stronie klienta (działającym w przeglądarkach internetowych) komunikację w czasie rzeczywistym i w sposób sterowany zdarzeniami.
Łatwość użytkowania
Ponieważ SockJS oferuje proste API odpowiadające WebSocket, programiści mogą z łatwością włączyć je do swoich projektów i z niego korzystać.
Skalowalność
SockJS ułatwia tworzenie skalowalnych aplikacji, które mogą obsługiwać wiele jednoczesnych połączeń i różne sytuacje sieciowe dzięki obsłudze wielu protokołów transportowych i technik awaryjnych.
Łatwość integracji
Ułatwia wdrażanie funkcji w czasie rzeczywistym, zapewniając proste API, które programiści mogą włączyć do swoich aplikacji internetowych bez konieczności stosowania skomplikowanego programowania sieciowego niskiego poziomu.
Abstrakcja protokołu transportowego:
WebSocket, HTTP long-polling i inne protokoły transportowe są abstrakcyjnie przedstawione przez SockJS. Dzięki swojej elastyczności gwarantowana jest niezawodna komunikacja nawet w sytuacjach, gdy połączenia WebSocket są ograniczone lub niedostępne.
Utwórz i skonfiguruj SockJS
Zazwyczaj konieczne jest skonfigurowanie SockJS zarówno po stronie klienta (w przeglądarce internetowej), jak i po stronie serwera (przy użyciu przeglądarki lub frameworka serwerowego, takiego jak Node.js), aby zbudować i skonfigurować go do komunikacji w czasie rzeczywistym w aplikacji internetowej. Poniżej znajduje się podstawowy przewodnik dotyczący tworzenia i konfiguracji SockJS:
Zainstaluj SockJS
SockJS można zainstalować za pomocą NPM lub dołączyć bezpośrednio poprzez CDN:
npm install sockjs-clientnpm install sockjs-clientDodaj SockJS do swojego kodu HTML
Dodaj bibliotekę JavaScript SockJS do tworzonego pliku HTML:
<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>Inicjalizacja połączenia SockJS
Utwórz instancję SockJS w pliku JavaScript (app.js lub podobnym) i połącz się z serwerem:
<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>Zamiast "http://localhost:3000/socket" należy użyć adresu URL punktu końcowego WebSocket po stronie serwera.

Konfiguracja po stronie serwera
Zainstaluj SockJS-Node
Aby zainstalować pakiet SockJS-Node, użyj npm:
npm install sockjsnpm install sockjsKonfiguracja serwera SockJS
Na serwerze Node.js skonfiguruj 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}`);
});Upewnij się, że kod po stronie serwera jest dostosowany do wymagań Twojej aplikacji i współpracuje z posiadaną już platformą serwerową lub konfiguracją.

Żądania międzydomenowe (CORS): Upewnij się, że Twój serwer skutecznie obsługuje ustawienia CORS, jeśli serwer i klient znajdują się w oddzielnych domenach.
Obsługa błędów: Zaimplementuj obsługę błędów i środki bezpieczeństwa (takie jak uwierzytelnianie i autoryzacja) zgodnie ze specyfikacjami Twojej aplikacji.
Wdrożenie: Skonfiguruj HTTPS dla bezpiecznych połączeń oraz skonfiguruj SockJS i swój serwer dla środowisk wdrożeniowych.
Ta konfiguracja stanowi podstawę do nawiązania komunikacji w czasie rzeczywistym między klientem internetowym a serwerem internetowym przy użyciu SockJS. W zależności od wymagań i architektury konkretnej aplikacji mogą być konieczne pewne dostosowania.
Pierwsze kroki
Konfiguracja aplikacji internetowej wykorzystującej możliwości komunikacji w czasie rzeczywistym SockJS oraz integracja IronPDF w celu dynamicznego tworzenia plików PDF to pierwszy krok w rozpoczęciu pracy z SockJS i IronPDF. Oto przewodnik stanowiący punkt wyjścia:
Czym jest IronPDF?
Potężne narzędzie Node.js o nazwie IronPDF służy do przekształcania danych HTML w pliki PDF o wyjątkowo wysokiej jakości. Nie tracąc na jakości oryginalnej treści internetowej, przyspiesza proces konwersji plików HTML, CSS i innych plików JavaScript do poprawnie sformatowanych plików PDF. Jest to bardzo pomocne narzędzie dla aplikacji internetowych, które muszą generować dynamiczne, nadające się do druku dokumenty, takie jak raporty, faktury i certyfikaty.
Konfigurowalne ustawienia stron, nagłówki, stopki oraz możliwość dodawania czcionek i obrazów to tylko niektóre z możliwości IronPDF. Może obsługiwać skomplikowane układy i style, aby zagwarantować, że każdy testowy plik PDF spełnia wymagania. Ponadto IronPDF zarządza wykonywaniem kodu JavaScript w kodzie HTML, umożliwiając precyzyjne renderowanie treści dynamicznych i interaktywnych.

Funkcje IronPDF
1. Generowanie plików PDF z HTML
Konwertuj JavaScript, HTML i CSS do formatu PDF. Obsługuje zapytania o media i responsywny projekt, dwa współczesne standardy internetowe. Przydatne do dynamicznego ozdabiania raportów PDF, faktur i dokumentów za pomocą HTML i CSS.
2. Edycja plików PDF
Do istniejących plików PDF można dodawać tekst, obrazy i inne treści. Wyodrębnij tekst i obrazy z plików PDF. Połącz wiele plików PDF w jeden plik. Podziel pliki PDF na wiele oddzielnych dokumentów. Należy uwzględnić znaki wodne, adnotacje, nagłówki i stopki.
3. Wydajność i niezawodność
Wysoka wydajność i niezawodność to cechy projektowe pożądane w środowiskach przemysłowych. Z łatwością zarządza dużymi zbiorami dokumentów.
Zainstaluj IronPDF
Zainstaluj pakiet IronPDF, aby uzyskać narzędzia potrzebne do pracy z plikami PDF w projektach Node.js. Uruchom następujące polecenie:
npm install @ironsoftware/ironpdfnpm install @ironsoftware/ironpdfPołącz SockJS z IronPDF
Skonfiguruj SockJS na serwerze Node.js, aby obsługiwał żądania generowania plików PDF i zarządzał połączeniami klientów:
// 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}`);
});Konfiguracja po stronie klienta
Skonfiguruj SockJS po stronie klienta, aby komunikować się z serwerem i wysyłać żądania w celu generowania plików PDF.
<!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>Po stronie serwera: Serwer Node.js konfiguruje serwer SockJS (sockjsServer) i nasłuchuje połączeń na ścieżce /socket. Wykorzystuje IronPDF (IronPdf.PdfDocument) do wywołania funkcji generatePdf() w celu obsługi przychodzących komunikatów (żądania generowania plików PDF). Po wygenerowaniu pliku PDF wykorzystuje połączenie SockJS do wysłania danych PDF zakodowanych w base64 z powrotem do klienta.

Po stronie klienta: Klient łączy się z serwerem za pośrednictwem połączenia SockJS (sock) i nasłuchuje zdarzeń, takich jak onopen, onmessage oraz onclose. Użytkownik używa sock.send(htmlContent), aby wysłać zawartość HTML (htmlContent) do serwera w celu wygenerowania pliku PDF po kliknięciu przycisku "Generuj PDF". Wyświetla lub pobiera plik PDF po uzyskaniu danych PDF z serwera (sock.onmessage).

Poniżej znajduje się wynik wygenerowany na podstawie kodu.

Wnioski
W tworzeniu aplikacji internetowych powstaje silna synergia, gdy SockJS jest używany do komunikacji w czasie rzeczywistym, a IronPDF do dynamicznego tworzenia plików PDF. Dzięki SockJS dwukierunkowa komunikacja między klientami a serwerami staje się łatwa, umożliwiając takie funkcje, jak interaktywna współpraca i aktualizacje w czasie rzeczywistym. Jednak IronPDF daje programistom możliwość tworzenia i modyfikowania dokumentów PDF programowo. Może nawet dynamicznie konwertować tekst HTML na pliki PDF.
Dzięki integracji tych technologii możliwe jest tworzenie złożonych aplikacji internetowych, które mogą natychmiast generować dokumenty PDF w odpowiedzi na działania użytkownika lub aktualizacje danych w czasie rzeczywistym. Integracja ta będzie szczególnie pomocna w aplikacjach wymagających generowania dokumentów w czasie rzeczywistym, edycji grupowej lub funkcji interaktywnego raportowania. Dzięki wykorzystaniu SockJS do natychmiastowych aktualizacji oraz IronPDF do dynamicznego tworzenia plików PDF programiści mogą zoptymalizować doświadczenia użytkowników, usprawnić przepływ pracy oraz zapewnić niezawodne rozwiązania, które spełniają szeroki zakres wymagań biznesowych każdego poważnego użytkownika SockJS.
Możemy zwiększyć użyteczność zestawu narzędzi do tworzenia aplikacji Node.js, wykorzystując IronPDF do dodania funkcji OCR, skanowania kodów kreskowych, tworzenia plików PDF, interakcji z Excelem i wielu innych. Wysoce konfigurowalne systemy Iron Software oraz obszerna biblioteka wtyczek wspieranych przez społeczność umożliwiają programistom szybsze tworzenie funkcji i aplikacji internetowych.
Przed podjęciem decyzji o zakupie programiści mogą skorzystać z licznych funkcji IronPDF w ramach bezpłatnej licencji probnej oraz z szeregu przykładów kodu udostępnionych przez firmę. Aby uzyskać więcej informacji na temat licencji wieczystej IronPDF, odwiedź stronę licencji. Aby uzyskać dalsze instrukcje dotyczące rozpoczęcia korzystania z IronPDF, odwiedź stronę dokumentacji.








