如何在Chrome中无需NodeJS中间件,通过WebSocket连接Zebra打印机发送ZPL命令?
可行方案(Chrome环境下无NodeJS中间服务器发送ZPL到Zebra ZD420)
首先明确:你的WebSocket代码失败是因为Zebra打印机的9100端口是原始TCP字节流服务,不支持WebSocket协议的握手流程,直接用WS连接必然失败。下面是几个无需中间服务器的可行方案:
方案1:Zebra官方Browser Print工具(推荐)
这是Zebra专为浏览器打印设计的官方方案,完美支持Chrome,无需自行处理TCP逻辑:
- 安装对应操作系统的Zebra Browser Print客户端及Chrome插件
- 在网页中引入官方JS库
- 通过API搜索网络中的ZD420打印机,直接发送ZPL命令
示例核心代码:
// 初始化Browser Print ZebraBrowserPrint.initialize(function() { // 搜索网络打印机 ZebraBrowserPrint.getPrinters(function(printers) { const targetPrinter = printers.find(p => p.name.includes("ZD420")); if (targetPrinter) { // 发送ZPL命令 ZebraBrowserPrint.sendZplOverNetwork(targetPrinter.address, "^XA^FO50,50^A0N,50,50^FDHello ZPL^FS^XZ", function(success) { console.log(success ? "打印成功" : "打印失败"); }); } }); });
方案2:Chrome扩展+Native Messaging(自定义轻量方案)
Chrome扩展本身无法直接发起原始TCP连接,但可通过Native Messaging调用本地轻量脚本(Python/Go均可)完成TCP通信,无需搭建服务器:
- 编写本地TCP客户端脚本(以Python为例):
import sys import socket import json # 读取Chrome扩展发来的JSON格式消息 message = json.load(sys.stdin) zpl_content = message["zpl"] # 连接打印机并发送ZPL s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(("192.168.0.99", 9100)) s.send(zpl_content.encode('utf-8')) s.close() # 向扩展返回执行结果 json.dump({"status": "success"}, sys.stdout) sys.stdout.flush()
- 配置Chrome扩展的
manifest.json,添加nativeMessaging权限并声明原生应用ID - 在系统中注册原生应用的manifest文件,关联上述Python脚本
- 扩展端通过
chrome.runtime.sendNativeMessage将ZPL命令发送给脚本
方案3:USB连接时使用Chrome Serial API(备选)
若打印机通过USB连接电脑,可直接用Chrome的Serial API与打印机通信:
// 请求串口权限 chrome.serial.getDevices(function(devices) { const printerPort = devices.find(d => d.displayName.includes("Zebra")); if (printerPort) { chrome.serial.connect(printerPort.path, {bitrate: 9600}, function(connectionInfo) { // 发送ZPL命令 const zpl = "^XA^FO50,50^A0N,50,50^FDHello ZPL^FS^XZ"; const buffer = new TextEncoder().encode(zpl); chrome.serial.send(connectionInfo.connectionId, buffer, function(sendInfo) { console.log("已发送字节数:", sendInfo.bytesSent); chrome.serial.disconnect(connectionInfo.connectionId); }); }); } });
内容的提问来源于stack exchange,提问作者Eduardo Iglesias
相关产品推荐
相关产品推荐

