Node updated. Some todos.
This commit is contained in:
58
Scripts/node_modules/ws/lib/receiver.js
generated
vendored
58
Scripts/node_modules/ws/lib/receiver.js
generated
vendored
@ -13,13 +13,6 @@ const { concat, toArrayBuffer, unmask } = require('./buffer-util');
|
||||
const { isValidStatusCode, isValidUTF8 } = require('./validation');
|
||||
|
||||
const FastBuffer = Buffer[Symbol.species];
|
||||
const promise = Promise.resolve();
|
||||
|
||||
//
|
||||
// `queueMicrotask()` is not available in Node.js < 11.
|
||||
//
|
||||
const queueTask =
|
||||
typeof queueMicrotask === 'function' ? queueMicrotask : queueMicrotaskShim;
|
||||
|
||||
const GET_INFO = 0;
|
||||
const GET_PAYLOAD_LENGTH_16 = 1;
|
||||
@ -39,7 +32,7 @@ class Receiver extends Writable {
|
||||
* Creates a Receiver instance.
|
||||
*
|
||||
* @param {Object} [options] Options object
|
||||
* @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether
|
||||
* @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether
|
||||
* any of the `'message'`, `'ping'`, and `'pong'` events can be emitted
|
||||
* multiple times in the same tick
|
||||
* @param {String} [options.binaryType=nodebuffer] The type for binary data
|
||||
@ -54,7 +47,10 @@ class Receiver extends Writable {
|
||||
constructor(options = {}) {
|
||||
super();
|
||||
|
||||
this._allowSynchronousEvents = !!options.allowSynchronousEvents;
|
||||
this._allowSynchronousEvents =
|
||||
options.allowSynchronousEvents !== undefined
|
||||
? options.allowSynchronousEvents
|
||||
: true;
|
||||
this._binaryType = options.binaryType || BINARY_TYPES[0];
|
||||
this._extensions = options.extensions || {};
|
||||
this._isServer = !!options.isServer;
|
||||
@ -563,21 +559,18 @@ class Receiver extends Writable {
|
||||
data = concat(fragments, messageLength);
|
||||
} else if (this._binaryType === 'arraybuffer') {
|
||||
data = toArrayBuffer(concat(fragments, messageLength));
|
||||
} else if (this._binaryType === 'blob') {
|
||||
data = new Blob(fragments);
|
||||
} else {
|
||||
data = fragments;
|
||||
}
|
||||
|
||||
//
|
||||
// If the state is `INFLATING`, it means that the frame data was
|
||||
// decompressed asynchronously, so there is no need to defer the event
|
||||
// as it will be emitted asynchronously anyway.
|
||||
//
|
||||
if (this._state === INFLATING || this._allowSynchronousEvents) {
|
||||
if (this._allowSynchronousEvents) {
|
||||
this.emit('message', data, true);
|
||||
this._state = GET_INFO;
|
||||
} else {
|
||||
this._state = DEFER_EVENT;
|
||||
queueTask(() => {
|
||||
setImmediate(() => {
|
||||
this.emit('message', data, true);
|
||||
this._state = GET_INFO;
|
||||
this.startLoop(cb);
|
||||
@ -604,7 +597,7 @@ class Receiver extends Writable {
|
||||
this._state = GET_INFO;
|
||||
} else {
|
||||
this._state = DEFER_EVENT;
|
||||
queueTask(() => {
|
||||
setImmediate(() => {
|
||||
this.emit('message', buf, false);
|
||||
this._state = GET_INFO;
|
||||
this.startLoop(cb);
|
||||
@ -675,7 +668,7 @@ class Receiver extends Writable {
|
||||
this._state = GET_INFO;
|
||||
} else {
|
||||
this._state = DEFER_EVENT;
|
||||
queueTask(() => {
|
||||
setImmediate(() => {
|
||||
this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);
|
||||
this._state = GET_INFO;
|
||||
this.startLoop(cb);
|
||||
@ -711,32 +704,3 @@ class Receiver extends Writable {
|
||||
}
|
||||
|
||||
module.exports = Receiver;
|
||||
|
||||
/**
|
||||
* A shim for `queueMicrotask()`.
|
||||
*
|
||||
* @param {Function} cb Callback
|
||||
*/
|
||||
function queueMicrotaskShim(cb) {
|
||||
promise.then(cb).catch(throwErrorNextTick);
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws an error.
|
||||
*
|
||||
* @param {Error} err The error to throw
|
||||
* @private
|
||||
*/
|
||||
function throwError(err) {
|
||||
throw err;
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws an error in the next tick.
|
||||
*
|
||||
* @param {Error} err The error to throw
|
||||
* @private
|
||||
*/
|
||||
function throwErrorNextTick(err) {
|
||||
process.nextTick(throwError, err);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user