跳至頁尾內容
PYTHON 幫助

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

即時伺服器被設計用來立即回應資料,從而對每個使用者互動或系統事件立即做出反應。 與引入延遲的傳統請求-回應伺服器不同,即時[伺服器](https://en.wikipedia.org/wiki/Server_(computing)使用技術和協議確保持續的資訊交換和即時更新。 這是因為即時伺服器對於多個需要即時通訊的應用至關重要:消息系統、線上遊戲、金融交易平台和協作工具。 在這篇文章中,我們將學習如何使用開源的即時伺服器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

上面的程式碼片段演示了如何使用Node.js中的@deepstream/server套件設置並啟動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擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話