node-hiprint-transit 概览
Node-hiprint-transit 是一个中继服务器,它使得使用 vue-plugin-hiprint 的 Web 应用程序能够与运行 electron-hiprint 的桌面客户端进行通信。它充当一个桥梁,允许 Web 客户端将打印作业发送到连接在桌面客户端上的本地打印机,而无需担心直接连接问题。
本文档对 node-hiprint-transit 系统、其用途、架构和核心组件进行了高层次的概述。有关安装说明,请参阅“入门指南”,有关详细的 API 信息,请参阅“API 参考”。
系统目的
Node-hiprint-transit 解决了分布式打印应用中的几个关键挑战:
- 为 Web 客户端和桌面打印客户端提供一个具有固定 IP/域名的稳定连接点。
- 通过基于令牌的身份验证保护所有通信。
- 在 Web 应用程序和桌面客户端之间路由打印请求和响应。
- 管理打印机发现和可用性。
- 实现远程打印,无需弹出对话框。
系统架构
以下内容说明了 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 | 客户端 → 服务器 | 请求更新的打印机列表 |
ippPrint | Web 客户端 → 服务器 → Electron 客户端 | 初始化一个 IPP 打印作业 |
news | Web 客户端 → 服务器 → Electron 客户端 | 发送打印信息 |
render-pdf | Web 客户端 → 服务器 → Electron 客户端 | 将内容渲染为 PDF |
render-print | Web 客户端 → 服务器 → Electron 客户端 | 渲染并打印内容 |
success | Electron 客户端 → 服务器 → Web 客户端 | 报告打印作业成功完成 |
error | Electron 客户端 → 服务器 → 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 参考”。