跳至页脚内容
PYTHON 帮助

深流 io (开发者如何使用)

一个实时服务器被设计为即时响应数据,使其对每个用户交互或系统事件立即响应。 与引入延迟的传统请求-响应服务器不同,实时[服务器](https://en.wikipedia.org/wiki/Server_(computing)使用技术和协议以确保连续的信息交换和即时更新。 这是因为实时服务器对于需要实时通讯的应用程序至关重要:消息系统、在线游戏、金融交易平台和协作工具。 在本文中,我们将学习如何使用开放的实时服务器deepstream和IronPDF来生成PDF。

deepstream.io是一个可扩展的,适用于数据同步和多对多消息传递的实时服务器。 它可以轻松处理数据,并保持许多客户端同步,延迟非常低,支持二进制数据传输。 deepstream.io被设计为可以置于其他负载平衡器和调节器之后,并提供了一种高效的方式来同步数据并保持资源文件的更新,这使得它非常适合于需要实时更新数据并寻找可扩展服务器解决方案的应用程序。

deepstream io(开发者如何使用):图1 - deepstream.io

开发者实施deepstream.io,可以轻松允许实时更新、协作应用和交互体验,而无需从头开始。 它被设计用于高负载和高效扩展,是高并发应用的首选软件。 deepstream.io很灵活,可能在多种不同的方式中成为您技术栈的完美补充。 它提供了一整套解决方案,允许用户创建实时、响应和交互的Web和移动应用。

要创建一个新的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类,创建一个实例,并将其连接到一个在127.0.0.1上的6020端口上本地运行的deepstream服务器。它不使用凭证登录,对于不使用身份验证的服务器或用于测试案例时,这是足够的。 此设置初始化了一个能够实时数据同步和通信的客户端。

一旦与服务器节点建立连接,服务器控制台中就会出现类似于下面的信息。

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等后端处理。 在应用程序中,IronPDF在动态生成和处理PDF时非常有帮助。 它提供了一种用户友好且灵活的方式来生成高质量的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 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。