跳過到頁腳內容
PYTHON 幫助

deepstream io(開發人員的工作原理)

即時伺服器旨在立即響應數據,令每個用戶互動或系統事件即時產生反應。 不同於傳統請求-響應伺服器會導致延遲,即時伺服器採用技術和協議來確保持續的信息交換和即時更新。 這是因為即時伺服器對於多個需要即時通信的應用至關重要:消息系統、線上遊戲、金融交易平台和協作工具。 在本文中,我們將學習如何使用開放的即時伺服器deepstream和IronPDF來生成PDF。

deepstream.io是一個可擴展的即時伺服器,用於數據同步和多對多消息傳遞。 它可以輕鬆處理數據,並以超低延遲支持二進制數據傳輸,同步許多客戶端。 deepstream.io被設計用於其他負載平衡器背後的安裝,並提供了一種高效的方法來同步數據和保持資源文件更新,這使得它非常適合即時更新數據的應用,並尋找可擴展的伺服器解決方案。

deepstream io(開發者如何使用):圖1 - deepstream.io

由開發者實現的deepstream.io可以輕鬆允許即時更新、協作應用程序和互動式體驗,而無需從零開始。 它被設計為高負載和高效擴展,成為高併發應用程序的首選軟體。 deepstream.io靈活,可在多種不同的方式中成為您技術堆疊的完美補充。 它提供了一個完整的解決方案,允許用戶創建即時、響應式和互動的網絡和移動應用。

要創建一個新的Node.js目錄,請在控制台中輸入以下命令:

mkdir deepstream-project
cd deepstream-project
npm init -y
mkdir deepstream-project
cd deepstream-project
npm init -y
SHELL

安裝deepstream.io套件

首先,您需要安裝deepstream.io。 您可以使用NPM安裝它或從官網下載二進制文件。

npm install @deepstream/server
npm install @deepstream/server
SHELL

deepstream.io的基本配置

const { Deepstream } = require('@deepstream/server');

// Create a new Deepstream server instance
const server = new Deepstream({});

// Start the server to listen for client connections
server.start();
const { Deepstream } = require('@deepstream/server');

// Create a new Deepstream server instance
const server = new Deepstream({});

// Start the server to listen for client connections
server.start();
JAVASCRIPT

上面的代碼片段展示瞭如何使用@deepstream/server套件在Node.js中設置和啟動deepstream.io伺服器。 它首先從套件中導入Deepstream類,然後創建一個新實例。 通過調用server.start(),伺服器啟動,準備接受輸入連接以處理即時數據綁定、消息或狀態後端服務。

將Deepstream與用戶端連接

const { DeepstreamClient } = require('@deepstream/client');

// Connect to a local deepstream server
const client = new DeepstreamClient('127.0.0.1:6020');

// Log in to the server without credentials (suitable for servers without authentication)
client.login(null);
const { DeepstreamClient } = require('@deepstream/client');

// Connect to a local deepstream server
const client = new DeepstreamClient('127.0.0.1:6020');

// Log in to the server without credentials (suitable for servers without authentication)
client.login(null);
JAVASCRIPT

上面的代碼展示瞭如何使用@deepstream/client庫連接deepstream。 此腳本導入DeepstreamClient類,創建一個實例並將其連接到本地運行在IP地址127.0.0.1上的deepstream伺服器,端口為6020。此連接無需憑證,這對於伺服器不使用認證時或用於測試案例時足夠。 此設置初始化了一個能即時數據同步和通信的用戶端。

一旦與伺服器節點建立聯繫,伺服器控制台中將出現類似下面的消息。

deepstream io(開發者如何使用):圖2 - 控制台消息

在deepstream.io中使用監聽器

以下是用於創建deepstream核心概念之一:監聽器的示例代碼。

const { DeepstreamClient } = require("@deepstream/client");

// Connect to the Deepstream server
const client = new DeepstreamClient("127.0.0.1:6020");

// Log in to the server
client.login(null, (success, clientData) => {
  if (success) {
    const event = client.event;
    // Publish a custom event
    event.publish("custom-event", { message: "Hello, Deepstream!" });
  }
});
const { DeepstreamClient } = require("@deepstream/client");

// Connect to the Deepstream server
const client = new DeepstreamClient("127.0.0.1:6020");

// Log in to the server
client.login(null, (success, clientData) => {
  if (success) {
    const event = client.event;
    // Publish a custom event
    event.publish("custom-event", { message: "Hello, Deepstream!" });
  }
});
JAVASCRIPT

在上述代碼中,用戶端使用@deepstream/client庫登錄到托管在127.0.0.1:6020上的deepstream伺服器。 完成認證後,它發布了一個名為"custom-event"具有{ message: "Hello, Deepstream!" }載荷的自定義事件。

介紹 IronPDF

使用IronPDF,一個非常強大的Node.js套件,用於創建、編輯、轉換和編輯PDF文件。 它是一個主要用於基於編程的PDF處理的工具,以及修改現有PDF和將HTML轉換成PDF的後端過程。 在需要動態創建和處理PDF的應用程式中,IronPDF非常有幫助。 它提供了一種用戶友好且靈活的方式生成高品質PDF文件。

deepstream io(開發者如何使用):圖3 - IronPDF

安裝IronPDF套件

使用npm下載並安裝啟用Node.js IronPDF功能的套件。

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

PDF生成功能

創建一個使用IronPDF生成PDF的功能:

const IronPdf = require('@ironsoftware/ironpdf');
const { PdfDocument } = IronPdf;

// Set IronPDF configuration, replacing 'YOUR_LICENSE_KEY' with your actual license key
const config = IronPdf.IronPdfGlobalConfig;
config.setConfig({ licenseKey: 'YOUR_LICENSE_KEY' });

async function generatePDF(title, content) {
  try {
    // Generate PDF from HTML content
    const pdf = await PdfDocument.fromHtml(`<html><body><h1>${title}</h1><p>${content}</p></body></html>`);
    return await pdf.saveAsBuffer();
  } catch (error) {
    console.error('Error generating PDF:', error);
    throw error;
  }
}

module.exports = generatePDF;
const IronPdf = require('@ironsoftware/ironpdf');
const { PdfDocument } = IronPdf;

// Set IronPDF configuration, replacing 'YOUR_LICENSE_KEY' with your actual license key
const config = IronPdf.IronPdfGlobalConfig;
config.setConfig({ licenseKey: 'YOUR_LICENSE_KEY' });

async function generatePDF(title, content) {
  try {
    // Generate PDF from HTML content
    const pdf = await PdfDocument.fromHtml(`<html><body><h1>${title}</h1><p>${content}</p></body></html>`);
    return await pdf.saveAsBuffer();
  } catch (error) {
    console.error('Error generating PDF:', error);
    throw error;
  }
}

module.exports = generatePDF;
JAVASCRIPT

設置Deepstream用戶端

撰寫一個JavaScript腳本,用於即時監聽數據並根據該數據生成PDF:

const { DeepstreamClient } = require('@deepstream/client');
const generatePDF = require('./generatePdf'); // Path to your PDF generation function

// Connect to the Deepstream server
const client = new DeepstreamClient('127.0.0.1:6020');

// Log in to the server
client.login(null, async (success) => {
  if (success) {
    console.log('Deepstream connected successfully');
    // Listen for a custom event to trigger PDF generation
    const event = client.event;
    event.subscribe('generate-pdf', async (data) => {
      const { title, content } = data;
      if (!title || !content) {
        console.error('Missing title or content for PDF generation');
        return;
      }
      try {
        // Generate the PDF
        const pdfBuffer = await generatePDF(title, content);
        // Handle the PDF buffer (e.g., save to file, send over network)
        console.log('PDF generated successfully');
        // Example: Save PDF to a file (optional)
        const fs = require('fs');
        fs.writeFileSync('generated.pdf', pdfBuffer);
      } catch (error) {
        console.error('Error generating PDF:', error);
      }
    });
  } else {
    console.error('Failed to connect to Deepstream');
  }
});
const { DeepstreamClient } = require('@deepstream/client');
const generatePDF = require('./generatePdf'); // Path to your PDF generation function

// Connect to the Deepstream server
const client = new DeepstreamClient('127.0.0.1:6020');

// Log in to the server
client.login(null, async (success) => {
  if (success) {
    console.log('Deepstream connected successfully');
    // Listen for a custom event to trigger PDF generation
    const event = client.event;
    event.subscribe('generate-pdf', async (data) => {
      const { title, content } = data;
      if (!title || !content) {
        console.error('Missing title or content for PDF generation');
        return;
      }
      try {
        // Generate the PDF
        const pdfBuffer = await generatePDF(title, content);
        // Handle the PDF buffer (e.g., save to file, send over network)
        console.log('PDF generated successfully');
        // Example: Save PDF to a file (optional)
        const fs = require('fs');
        fs.writeFileSync('generated.pdf', pdfBuffer);
      } catch (error) {
        console.error('Error generating PDF:', error);
      }
    });
  } else {
    console.error('Failed to connect to Deepstream');
  }
});
JAVASCRIPT

發布事件以觸發PDF生成

可以發布事件以從另一JavaScript文件或應用的一部分觸發PDF生成:

const { DeepstreamClient } = require('@deepstream/client');

// Connect to the Deepstream server
const client = new DeepstreamClient('127.0.0.1:6020');

// Log in to the server
client.login(null, () => {
  const event = client.event;
  // Publish a custom event with title and content
  event.publish('generate-pdf', {
    title: 'Sample PDF Title',
    content: 'This is the content of the PDF document.'
  });
});
const { DeepstreamClient } = require('@deepstream/client');

// Connect to the Deepstream server
const client = new DeepstreamClient('127.0.0.1:6020');

// Log in to the server
client.login(null, () => {
  const event = client.event;
  // Publish a custom event with title and content
  event.publish('generate-pdf', {
    title: 'Sample PDF Title',
    content: 'This is the content of the PDF document.'
  });
});
JAVASCRIPT

Deepstream.io通過監聽將觸發PDF生成的即時事件來實作。 generatePDF函數使用IronPDF創建基於Deepstream.io事件數據的PDF文檔。 DeepstreamClient訂閱這些事件,並在發布相關事件時調用PDF生成功能。 這樣的整合允許根據事件發生、請求或數據變更即時動態生成PDF。

deepstream io(開發者如何使用):圖4 - PDF輸出

授權

為了使代碼在無水印情況下編譯和運行,需要授權金鑰。 開發者如欲獲得試用授權可在這裡註冊。 獲取授權不需要提供信用卡。 您只需輸入您的電子郵件地址即可註冊免費試用。

結論

通過deepstream.io和IronPDF的結合,實現了最強大的即時數據處理和動態文件生成解決方案之一。 deepstream.io同步變更並實時記錄所有事件,因此能立即響應任何數據變動。 IronPDF提供了一種強大機制來快速生成專業文檔。 這種整合將使您的應用能自動生成和處理PDF文件,不僅在即時數據變化時,還在用戶與應用互動時。

無論是報告生成、發票,或任何其他文檔類型,deepstream.io與IronPDF的集成能夠簡化工作流程、響應式文檔創建,並保持應用與即時資訊同步。 這種配對最適合需要即時文件生成和管理支持的敏捷、數據驅動和響應式應用。

Iron Software提供的庫,使我們能快速輕鬆地為多種操作系統、瀏覽器和平台創建程序,包括Windows、Android、MAC、Linux等。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me