首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:检测到不支持的WebSocket版本: HyBi-00/Hixie-76

错误:检测到不支持的WebSocket版本: HyBi-00/Hixie-76
EN

Stack Overflow用户
提问于 2019-06-21 21:32:36
回答 1查看 168关注 0票数 2

我尝试将我的angular 7 web应用程序与QZ托盘集成,以便在没有预览对话框的情况下进行打印。但是得到了不支持的WebSocket版本。请帮我解决好吗?谢谢

代码语言:javascript
复制
- 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"
},

下面是我所做的

代码语言:javascript
复制
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));

输出日志:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2020-04-07 03:28:45

w3cwebsocket替换ws项目。

代码语言:javascript
复制
// 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);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56704496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档