跳转到内容

node-hiprint-transit 概览

Node-hiprint-transit 是一个中继服务器,它使得使用 vue-plugin-hiprint 的 Web 应用程序能够与运行 electron-hiprint 的桌面客户端进行通信。它充当一个桥梁,允许 Web 客户端将打印作业发送到连接在桌面客户端上的本地打印机,而无需担心直接连接问题。

本文档对 node-hiprint-transit 系统、其用途、架构和核心组件进行了高层次的概述。有关安装说明,请参阅“入门指南”,有关详细的 API 信息,请参阅“API 参考”。

系统目的

Node-hiprint-transit 解决了分布式打印应用中的几个关键挑战:

  1. 为 Web 客户端和桌面打印客户端提供一个具有固定 IP/域名的稳定连接点。
  2. 通过基于令牌的身份验证保护所有通信。
  3. 在 Web 应用程序和桌面客户端之间路由打印请求和响应。
  4. 管理打印机发现和可用性。
  5. 实现远程打印,无需弹出对话框。

系统架构

以下内容说明了 node-hiprint-transit 系统的高级架构: (注意:原文中此处包含一个架构图,本文档无法直接展示,请参考源文档。)

关键组件

Socket.IO 服务器

node-hiprint-transit 的核心是一个 Socket.IO 服务器,它促进了客户端之间基于事件的实时双向通信。该服务器:

  • 监听一个可配置的端口(默认为 17521)。
  • 支持 HTTP 和 HTTPS (SSL/TLS) 连接。
  • 使用基于令牌的安全性对客户端进行身份验证。
  • 在 Web 客户端和 electron-hiprint 客户端之间路由消息。

身份验证系统

所有到服务器的连接都通过基于令牌的身份验证系统进行保护:

  • 令牌在服务器初始化期间配置。
  • 支持使用 * 字符的通配符模式。
  • 没有有效令牌的连接将被拒绝。

客户端管理

服务器维护所有已连接客户端的信息:

  • 将客户端 ID 映射到客户端信息。
  • 跟踪客户端功能和打印机列表。
  • 按身份验证令牌对客户端进行分组。
  • 提供用于客户端发现和状态更新的事件。

通信流程

以下内容说明了打印请求的典型流程: (注意:原文中此处包含一个通信流程图,本文档无法直接展示,请参考源文档。)

事件系统

node-hiprint-transit 使用基于事件的架构来处理各种打印操作。主要事件包括:

事件方向目的
serverInfo服务器 → 客户端提供服务器统计信息和版本信息
clients服务器 → Web 客户端列出所有已连接的 electron-hiprint 客户端
printerList服务器 → Web 客户端列出所有客户端上的所有可用打印机
refreshPrinterList客户端 → 服务器请求更新的打印机列表
ippPrintWeb 客户端 → 服务器 → Electron 客户端初始化一个 IPP 打印作业
newsWeb 客户端 → 服务器 → Electron 客户端发送打印信息
render-pdfWeb 客户端 → 服务器 → Electron 客户端将内容渲染为 PDF
render-printWeb 客户端 → 服务器 → Electron 客户端渲染并打印内容
successElectron 客户端 → 服务器 → Web 客户端报告打印作业成功完成
errorElectron 客户端 → 服务器 → Web 客户端报告打印作业错误

配置系统

服务器配置通过以下方式管理:

  • 初始设置向导,提示输入语言、端口、令牌和 SSL 首选项。
  • 配置存储在 config.json 文件中。
  • 支持 SSL/TLS 加密和证书管理。

服务器信息

当客户端连接时,服务器会提供有关其状态的详细信息。

国际化

服务器通过国际化系统支持多种语言:

  • 默认支持英语和中文。
  • 语言首选项存储在配置中。
  • 本地化的服务器消息、日志和响应。

定期更新

为确保打印机列表保持最新,服务器会:

  • 每 10 分钟自动从 electron-hiprint 客户端请求更新的打印机列表。
  • 提供手动刷新请求的事件。

与其他组件集成

Node-hiprint-transit 是一个更广泛生态系统的一部分:

  • Web 客户端使用 vue-plugin-hiprint 库来设计和生成打印模板。
  • 桌面客户端运行 electron-hiprint 以访问本地打印机。
  • 通信使用 Socket.IO 进行实时消息传递。
  • 安全性依赖于共享令牌身份验证。

此概述为了解 node-hiprint-transit 的工作原理奠定了基础。有关详细的设置说明,请参阅“入门指南”,有关 API 文档,请参阅“API 参考”。