Wiki - 2.0 API Overrides

Compatibility

Background

QZ Tray 2.0 is bundled with RSVP to provide ECMAScript 6 Promise support. If RSVP is not desired, it can be overridden using qz.api.setPromiseType(...) to avoid ReferenceError: RSVP is not defined or Uncaught TypeError: Cannot read property 'promise' of null. Override examples are provided below.

Native Promises

  1. Override RSVP with native Promises using qz.api.setPromiseType(...).

    qz.api.setPromiseType(function promise(resolver) { return new Promise(resolver); });

BlueBird

  1. Include the new promise library:

    <script type="text/javascript" src="https://cdn.jsdelivr.net/bluebird/latest/bluebird.js"></script>

    or via npm : npm install bluebird

  2. Override RSVP with Bluebird using qz.api.setPromiseType(...).

    // var Promise = require('bluebird');
    qz.api.setPromiseType(function promise(resolver) { return new Promise(resolver); });

Q

  1. Include the new promise library:

    <script type="text/javascript" src="https://rawgit.com/kriskowal/q/v1/q.js"></script>

    or via npm : npm install q

  2. Override RSVP with Q using qz.api.setPromiseType(...).

    // var Q = require('q');
    qz.api.setPromiseType(Q.Promise);

WebSocket

As of Node 6.5, WebSockets are only available through 3rd party libraries causing Error: WebSocket not supported by this browser.

var WebSocket = require('ws');
qz.api.setWebSocketType(WebSocket);

Override SHA256

A hashing algorithm is required for signature validation. Use qz.setSha256Type(...) to override the default hashing library and avoid TypeError: _qz.tools.hash is not a function.

Node 6.5

qz.setSha256Type(function(data) {
   return crypto.createHash('sha256').update(data).digest('hex');
});

Node 4.5

var createHash = require('sha.js');
qz.api.setSha256Type(function(data) {
    return createHash('sha256').update(data).digest('hex');
});
Edit this page