angular7 - 错误:检测到不支持的 WebSocket 版本:HyBi-00/Hixie-76
问题描述
我试图将我的 Angular 7 Web 应用程序与 QZ Tray 集成以在没有预览对话框的情况下进行打印。但是得到了不受支持的 WebSocket 版本。请帮我解决?谢谢
- Dependencies
"dependencies": {
"@agm/core": "^1.0.0-beta.6",
"@angular/animations": "^7.2.11",
"@angular/cdk": "^7.3.6",
"@angular/common": "^7.2.11",
"@angular/compiler": "^7.2.11",
"@angular/core": "^7.2.11",
"@angular/forms": "^7.2.11",
"@angular/http": "^7.2.11",
"@angular/material": "^7.2.11",
"@angular/platform-browser": "^7.2.11",
"@angular/platform-browser-dynamic": "^7.2.11",
"@angular/router": "^7.2.11",
"@angular/upgrade": "^7.2.11",
"js-sha256": "^0.9.0",
"qz-tray": "^2.0.10",
"roboto-fontface": "0.8.0",
"rxjs": "6.4.0",
"rxjs-compat": "6.3.0",
"sha": "^3.0.0",
"ws": "7.0.0",
"zone.js": "^0.8.29"
},
现在这就是我所做的
import * as qz from 'qz-tray';
import { sha256 } from 'js-sha256';
qz.api.setSha256Type(data => sha256(data));
qz.api.setPromiseType(function promise(resolver) { return new Promise(resolver); });
qz.api.setWebSocketType(require('ws'));
var createHash = require('sha.js');
qz.api.setSha256Type(function(data) {return createHash('sha256').update(data).digest('hex');});
qz.websocket.connect().then(qz.printers.getDefault).then(printer => console.log("Default printer: " + printer))
.then(qz.websocket.disconnect)
.catch(err => console.error(err));
输出日志:
utils.ts:414 Error: Unsupported WebSocket version detected: HyBi-00/Hixie-76 at qz-tray.js:667 at new ZoneAwarePromise (zone.js:910) at Object.promise (utils.ts:21) at Object.connect (qz-tray.js:654) at Utils.push../src/app/@core/one.utils/utils/common/utils.ts.Utils.initPrinterService (utils.ts:405)
解决方案
将ws
项目替换为w3cwebsocket
.
// Node example, adjust to your implementation as-needed
var qz = require("qz-tray");
// Use default Promise provided by JS
qz.api.setPromiseType(function promise(resolver) { return new Promise(resolver); });
// Simulate the browser's version of the websocket
qz.api.setWebSocketType(require('websocket').w3cwebsocket);
// There's a bunch of sha256 libs out there, choose one
var createHash = require('sha.js');
qz.api.setSha256Type(function(data) {
return createHash('sha256').update(data).digest('hex');
});
qz.websocket.connect().then(function() {
return qz.printers.find();
}).then(function(printers) {
console.log(printers);
}).then(function() {
return qz.websocket.disconnect();
}).then(function() {
process.exit(0);
}).catch(function(err) {
console.error(err);
process.exit(1);
});
推荐阅读
- maven - 如何避免从 maven (POM) 下载 google-collections jar,Exclude 也不起作用
- pagination - Azure 数据工厂 REST API 立即提供服务 - 分页问题
- reactjs - Devextreme DataGrid 与 Ag-Grid 相比如何反应?
- java - 即使使用 Optional<> 仍然会出现 NullPointerException
- scala - 案例类的字符串字段的修剪值
- c# - 无法使用 sendgrid api 发送附件
- python - Python中的蛇游戏使用Turtle图形错误
- python - 不确定从 Python 的这一点到哪里去?
- ios - 是否可以从一个 Apple Watch 应用程序重定向到另一个 Apple Watch?
- python - 从 panda DataFrame 创建一个 pd.Series 列表