[TS] Change websocket library in Node (#2989)
This commit is contained in:
parent
4dfd93c1d7
commit
ef3d3b1cdd
|
|
@ -8,9 +8,13 @@
|
||||||
"version": "file:../signalr",
|
"version": "file:../signalr",
|
||||||
"requires": {
|
"requires": {
|
||||||
"eventsource": "^1.0.7",
|
"eventsource": "^1.0.7",
|
||||||
"websocket": "^1.0.26"
|
"ws": "^6.0.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"async-limiter": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
"debug": {
|
"debug": {
|
||||||
"version": "2.6.9",
|
"version": "2.6.9",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
|
|
@ -85,6 +89,13 @@
|
||||||
"yaeti": "^0.0.6"
|
"yaeti": "^0.0.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"ws": {
|
||||||
|
"version": "6.0.0",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"async-limiter": "~1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"yaeti": {
|
"yaeti": {
|
||||||
"version": "0.0.6",
|
"version": "0.0.6",
|
||||||
"bundled": true
|
"bundled": true
|
||||||
|
|
@ -1086,6 +1097,19 @@
|
||||||
"debug": "~3.1.0",
|
"debug": "~3.1.0",
|
||||||
"engine.io-parser": "~2.1.0",
|
"engine.io-parser": "~2.1.0",
|
||||||
"ws": "~3.3.1"
|
"ws": "~3.3.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"ws": {
|
||||||
|
"version": "3.3.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
|
||||||
|
"integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"async-limiter": "~1.0.0",
|
||||||
|
"safe-buffer": "~5.1.0",
|
||||||
|
"ultron": "~1.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"engine.io-client": {
|
"engine.io-client": {
|
||||||
|
|
@ -1105,6 +1129,19 @@
|
||||||
"ws": "~3.3.1",
|
"ws": "~3.3.1",
|
||||||
"xmlhttprequest-ssl": "~1.5.4",
|
"xmlhttprequest-ssl": "~1.5.4",
|
||||||
"yeast": "0.1.2"
|
"yeast": "0.1.2"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"ws": {
|
||||||
|
"version": "3.3.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
|
||||||
|
"integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"async-limiter": "~1.0.0",
|
||||||
|
"safe-buffer": "~5.1.0",
|
||||||
|
"ultron": "~1.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"engine.io-parser": {
|
"engine.io-parser": {
|
||||||
|
|
@ -1523,14 +1560,12 @@
|
||||||
"balanced-match": {
|
"balanced-match": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"brace-expansion": {
|
"brace-expansion": {
|
||||||
"version": "1.1.11",
|
"version": "1.1.11",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"balanced-match": "^1.0.0",
|
"balanced-match": "^1.0.0",
|
||||||
"concat-map": "0.0.1"
|
"concat-map": "0.0.1"
|
||||||
|
|
@ -1545,20 +1580,17 @@
|
||||||
"code-point-at": {
|
"code-point-at": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"concat-map": {
|
"concat-map": {
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"console-control-strings": {
|
"console-control-strings": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"core-util-is": {
|
"core-util-is": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
|
|
@ -1675,8 +1707,7 @@
|
||||||
"inherits": {
|
"inherits": {
|
||||||
"version": "2.0.3",
|
"version": "2.0.3",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"ini": {
|
"ini": {
|
||||||
"version": "1.3.5",
|
"version": "1.3.5",
|
||||||
|
|
@ -1688,7 +1719,6 @@
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"number-is-nan": "^1.0.0"
|
"number-is-nan": "^1.0.0"
|
||||||
}
|
}
|
||||||
|
|
@ -1703,7 +1733,6 @@
|
||||||
"version": "3.0.4",
|
"version": "3.0.4",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"brace-expansion": "^1.1.7"
|
"brace-expansion": "^1.1.7"
|
||||||
}
|
}
|
||||||
|
|
@ -1711,14 +1740,12 @@
|
||||||
"minimist": {
|
"minimist": {
|
||||||
"version": "0.0.8",
|
"version": "0.0.8",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"minipass": {
|
"minipass": {
|
||||||
"version": "2.2.4",
|
"version": "2.2.4",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"safe-buffer": "^5.1.1",
|
"safe-buffer": "^5.1.1",
|
||||||
"yallist": "^3.0.0"
|
"yallist": "^3.0.0"
|
||||||
|
|
@ -1737,7 +1764,6 @@
|
||||||
"version": "0.5.1",
|
"version": "0.5.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"minimist": "0.0.8"
|
"minimist": "0.0.8"
|
||||||
}
|
}
|
||||||
|
|
@ -1818,8 +1844,7 @@
|
||||||
"number-is-nan": {
|
"number-is-nan": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"object-assign": {
|
"object-assign": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
|
|
@ -1831,7 +1856,6 @@
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"wrappy": "1"
|
"wrappy": "1"
|
||||||
}
|
}
|
||||||
|
|
@ -1953,7 +1977,6 @@
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"code-point-at": "^1.0.0",
|
"code-point-at": "^1.0.0",
|
||||||
"is-fullwidth-code-point": "^1.0.0",
|
"is-fullwidth-code-point": "^1.0.0",
|
||||||
|
|
@ -2799,7 +2822,8 @@
|
||||||
"version": "2.10.0",
|
"version": "2.10.0",
|
||||||
"resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
|
||||||
"integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
|
"integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"nanomatch": {
|
"nanomatch": {
|
||||||
"version": "1.2.13",
|
"version": "1.2.13",
|
||||||
|
|
@ -3710,15 +3734,6 @@
|
||||||
"mime-types": "~2.1.18"
|
"mime-types": "~2.1.18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"typedarray-to-buffer": {
|
|
||||||
"version": "3.1.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
|
|
||||||
"integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"is-typedarray": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"typescript": {
|
"typescript": {
|
||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.1.tgz",
|
||||||
|
|
@ -4018,29 +4033,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"websocket": {
|
|
||||||
"version": "1.0.26",
|
|
||||||
"resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.26.tgz",
|
|
||||||
"integrity": "sha512-fjcrYDPIQxpTnqFQ9JjxUQcdvR89MFAOjPBlF+vjOt49w/XW4fJknUoMz/mDIn2eK1AdslVojcaOxOqyZZV8rw==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"debug": "^2.2.0",
|
|
||||||
"nan": "^2.3.3",
|
|
||||||
"typedarray-to-buffer": "^3.1.2",
|
|
||||||
"yaeti": "^0.0.6"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"debug": {
|
|
||||||
"version": "2.6.9",
|
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
|
||||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"ms": "2.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"which": {
|
"which": {
|
||||||
"version": "1.3.1",
|
"version": "1.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
|
||||||
|
|
@ -4063,14 +4055,12 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"ws": {
|
"ws": {
|
||||||
"version": "3.3.3",
|
"version": "6.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
|
"resolved": "https://registry.npmjs.org/ws/-/ws-6.0.0.tgz",
|
||||||
"integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
|
"integrity": "sha512-c2UlYcAZp1VS8AORtpq6y4RJIkJ9dQz18W32SpR/qXGfLDZ2jU4y4wKvvZwqbi7U6gxFQTeE+urMbXU/tsDy4w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"async-limiter": "~1.0.0",
|
"async-limiter": "~1.0.0"
|
||||||
"safe-buffer": "~5.1.0",
|
|
||||||
"ultron": "~1.1.0"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"xmlbuilder": {
|
"xmlbuilder": {
|
||||||
|
|
@ -4091,12 +4081,6 @@
|
||||||
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
|
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"yaeti": {
|
|
||||||
"version": "0.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz",
|
|
||||||
"integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"yeast": {
|
"yeast": {
|
||||||
"version": "0.1.2",
|
"version": "0.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
"karma-summary-reporter": "^1.5.0",
|
"karma-summary-reporter": "^1.5.0",
|
||||||
"ts-node": "^4.1.0",
|
"ts-node": "^4.1.0",
|
||||||
"typescript": "^3.0.1",
|
"typescript": "^3.0.1",
|
||||||
"websocket": " ^1.0.26"
|
"ws": " ^6.0.0"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"clean": "node ../common/node_modules/rimraf/bin.js ./wwwroot/dist ./obj/js",
|
"clean": "node ../common/node_modules/rimraf/bin.js ./wwwroot/dist ./obj/js",
|
||||||
|
|
|
||||||
|
|
@ -20,10 +20,9 @@ describe("WebSockets", () => {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const websocketModule = require("websocket");
|
const websocketModule = require("ws");
|
||||||
const hasWebsocket = websocketModule && websocketModule.w3cwebsocket;
|
if (websocketModule) {
|
||||||
if (hasWebsocket) {
|
webSocket = new websocketModule(ECHOENDPOINT_URL.replace(/^http/, "ws"));
|
||||||
webSocket = new websocketModule.w3cwebsocket(ECHOENDPOINT_URL.replace(/^http/, "ws"));
|
|
||||||
} else {
|
} else {
|
||||||
// No WebSockets implementations in current environment, skip test
|
// No WebSockets implementations in current environment, skip test
|
||||||
done();
|
done();
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@aspnet/signalr-protocol-msgpack",
|
"name": "@aspnet/signalr-protocol-msgpack",
|
||||||
"version": "1.1.0-preview2-t000",
|
"version": "1.1.0-preview3-t000",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import * as msgpack5 from "msgpack5";
|
||||||
import { CompletionMessage, HubMessage, IHubProtocol, ILogger, InvocationMessage, LogLevel, MessageHeaders, MessageType, NullLogger, StreamInvocationMessage, StreamItemMessage, TransferFormat } from "@aspnet/signalr";
|
import { CompletionMessage, HubMessage, IHubProtocol, ILogger, InvocationMessage, LogLevel, MessageHeaders, MessageType, NullLogger, StreamInvocationMessage, StreamItemMessage, TransferFormat } from "@aspnet/signalr";
|
||||||
|
|
||||||
import { BinaryMessageFormat } from "./BinaryMessageFormat";
|
import { BinaryMessageFormat } from "./BinaryMessageFormat";
|
||||||
|
import { isArrayBuffer } from "./Utils";
|
||||||
|
|
||||||
// TypeDoc's @inheritDoc and @link don't work across modules :(
|
// TypeDoc's @inheritDoc and @link don't work across modules :(
|
||||||
|
|
||||||
|
|
@ -31,7 +32,7 @@ export class MessagePackHubProtocol implements IHubProtocol {
|
||||||
*/
|
*/
|
||||||
public parseMessages(input: ArrayBuffer | Buffer, logger: ILogger): HubMessage[] {
|
public parseMessages(input: ArrayBuffer | Buffer, logger: ILogger): HubMessage[] {
|
||||||
// The interface does allow "string" to be passed in, but this implementation does not. So let's throw a useful error.
|
// The interface does allow "string" to be passed in, but this implementation does not. So let's throw a useful error.
|
||||||
if (!(input instanceof ArrayBuffer) && !(input instanceof Buffer)) {
|
if (!(input instanceof Buffer) && !(isArrayBuffer(input))) {
|
||||||
throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer or Buffer.");
|
throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer or Buffer.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
// Copyright (c) .NET Foundation. All rights reserved.
|
||||||
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
// Copied from signalr/Utils.ts
|
||||||
|
/** @private */
|
||||||
|
export function isArrayBuffer(val: any): val is ArrayBuffer {
|
||||||
|
return val && typeof ArrayBuffer !== "undefined" &&
|
||||||
|
(val instanceof ArrayBuffer ||
|
||||||
|
// Sometimes we get an ArrayBuffer that doesn't satisfy instanceof
|
||||||
|
(val.constructor && val.constructor.name === "ArrayBuffer"));
|
||||||
|
}
|
||||||
|
|
@ -1,15 +1,9 @@
|
||||||
{
|
{
|
||||||
"name": "@aspnet/signalr",
|
"name": "@aspnet/signalr",
|
||||||
"version": "1.1.0-preview2-t000",
|
"version": "1.1.0-preview3-t000",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/events": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"@types/eventsource": {
|
"@types/eventsource": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/@types/eventsource/-/eventsource-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/@types/eventsource/-/eventsource-1.0.2.tgz",
|
||||||
|
|
@ -22,23 +16,10 @@
|
||||||
"integrity": "sha512-fCHV45gS+m3hH17zgkgADUSi2RR1Vht6wOZ0jyHP8rjiQra9f+mIcgwPQHllmDocYOstIEbKlxbFDYlgrTPYqw==",
|
"integrity": "sha512-fCHV45gS+m3hH17zgkgADUSi2RR1Vht6wOZ0jyHP8rjiQra9f+mIcgwPQHllmDocYOstIEbKlxbFDYlgrTPYqw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/websocket": {
|
"async-limiter": {
|
||||||
"version": "0.0.40",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-0.0.40.tgz",
|
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
|
||||||
"integrity": "sha512-ldteZwWIgl9cOy7FyvYn+39Ah4+PfpVE72eYKw75iy2L0zTbhbcwvzeJ5IOu6DQP93bjfXq0NGHY6FYtmYoqFQ==",
|
"integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"@types/events": "*",
|
|
||||||
"@types/node": "*"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"debug": {
|
|
||||||
"version": "2.6.9",
|
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
|
||||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
|
||||||
"requires": {
|
|
||||||
"ms": "2.0.0"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"es6-promise": {
|
"es6-promise": {
|
||||||
"version": "4.2.2",
|
"version": "4.2.2",
|
||||||
|
|
@ -54,21 +35,6 @@
|
||||||
"original": "^1.0.0"
|
"original": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"is-typedarray": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
|
|
||||||
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
|
|
||||||
},
|
|
||||||
"ms": {
|
|
||||||
"version": "2.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
|
||||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
|
||||||
},
|
|
||||||
"nan": {
|
|
||||||
"version": "2.11.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz",
|
|
||||||
"integrity": "sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw=="
|
|
||||||
},
|
|
||||||
"original": {
|
"original": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
|
||||||
|
|
@ -87,14 +53,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
|
||||||
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
|
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
|
||||||
},
|
},
|
||||||
"typedarray-to-buffer": {
|
|
||||||
"version": "3.1.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
|
|
||||||
"integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
|
|
||||||
"requires": {
|
|
||||||
"is-typedarray": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"url-parse": {
|
"url-parse": {
|
||||||
"version": "1.4.3",
|
"version": "1.4.3",
|
||||||
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz",
|
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz",
|
||||||
|
|
@ -104,21 +62,13 @@
|
||||||
"requires-port": "^1.0.0"
|
"requires-port": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"websocket": {
|
"ws": {
|
||||||
"version": "1.0.26",
|
"version": "6.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.26.tgz",
|
"resolved": "https://registry.npmjs.org/ws/-/ws-6.0.0.tgz",
|
||||||
"integrity": "sha512-fjcrYDPIQxpTnqFQ9JjxUQcdvR89MFAOjPBlF+vjOt49w/XW4fJknUoMz/mDIn2eK1AdslVojcaOxOqyZZV8rw==",
|
"integrity": "sha512-c2UlYcAZp1VS8AORtpq6y4RJIkJ9dQz18W32SpR/qXGfLDZ2jU4y4wKvvZwqbi7U6gxFQTeE+urMbXU/tsDy4w==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"debug": "^2.2.0",
|
"async-limiter": "~1.0.0"
|
||||||
"nan": "^2.3.3",
|
|
||||||
"typedarray-to-buffer": "^3.1.2",
|
|
||||||
"yaeti": "^0.0.6"
|
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"yaeti": {
|
|
||||||
"version": "0.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz",
|
|
||||||
"integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc="
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,11 +37,11 @@
|
||||||
],
|
],
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"es6-promise": "^4.2.2",
|
"es6-promise": "^4.2.2",
|
||||||
"@types/websocket": "^0.0.40",
|
"@types/node": "^10.9.4",
|
||||||
"@types/eventsource": "^1.0.2"
|
"@types/eventsource": "^1.0.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"websocket": "^1.0.26",
|
"ws": "^6.0.0",
|
||||||
"eventsource": "^1.0.7"
|
"eventsource": "^1.0.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
import { TextMessageFormat } from "./TextMessageFormat";
|
import { TextMessageFormat } from "./TextMessageFormat";
|
||||||
|
import { isArrayBuffer } from "./Utils";
|
||||||
|
|
||||||
/** @private */
|
/** @private */
|
||||||
export interface HandshakeRequestMessage {
|
export interface HandshakeRequestMessage {
|
||||||
|
|
@ -26,7 +27,7 @@ export class HandshakeProtocol {
|
||||||
let messageData: string;
|
let messageData: string;
|
||||||
let remainingData: any;
|
let remainingData: any;
|
||||||
|
|
||||||
if (data instanceof ArrayBuffer || (typeof Buffer !== "undefined" && data instanceof Buffer)) {
|
if (isArrayBuffer(data) || (typeof Buffer !== "undefined" && data instanceof Buffer)) {
|
||||||
// Format is binary but still need to read JSON text from handshake response
|
// Format is binary but still need to read JSON text from handshake response
|
||||||
const binaryData = new Uint8Array(data);
|
const binaryData = new Uint8Array(data);
|
||||||
const separatorIndex = binaryData.indexOf(TextMessageFormat.RecordSeparatorCode);
|
const separatorIndex = binaryData.indexOf(TextMessageFormat.RecordSeparatorCode);
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ let WebSocketModule: any = null;
|
||||||
let EventSourceModule: any = null;
|
let EventSourceModule: any = null;
|
||||||
if (typeof window === "undefined" && typeof require !== "undefined") {
|
if (typeof window === "undefined" && typeof require !== "undefined") {
|
||||||
// tslint:disable-next-line:no-var-requires
|
// tslint:disable-next-line:no-var-requires
|
||||||
WebSocketModule = require("websocket");
|
WebSocketModule = require("ws");
|
||||||
// tslint:disable-next-line:no-var-requires
|
// tslint:disable-next-line:no-var-requires
|
||||||
EventSourceModule = require("eventsource");
|
EventSourceModule = require("eventsource");
|
||||||
}
|
}
|
||||||
|
|
@ -73,9 +73,8 @@ export class HttpConnection implements IConnection {
|
||||||
if (!isNode && typeof WebSocket !== "undefined" && !options.WebSocket) {
|
if (!isNode && typeof WebSocket !== "undefined" && !options.WebSocket) {
|
||||||
options.WebSocket = WebSocket;
|
options.WebSocket = WebSocket;
|
||||||
} else if (isNode && !options.WebSocket) {
|
} else if (isNode && !options.WebSocket) {
|
||||||
const websocket = WebSocketModule && WebSocketModule.w3cwebsocket;
|
if (WebSocketModule) {
|
||||||
if (websocket) {
|
options.WebSocket = WebSocketModule;
|
||||||
options.WebSocket = WebSocketModule.w3cwebsocket;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import { URL } from "url";
|
||||||
import { AbortError, HttpError, TimeoutError } from "./Errors";
|
import { AbortError, HttpError, TimeoutError } from "./Errors";
|
||||||
import { HttpClient, HttpRequest, HttpResponse } from "./HttpClient";
|
import { HttpClient, HttpRequest, HttpResponse } from "./HttpClient";
|
||||||
import { ILogger, LogLevel } from "./ILogger";
|
import { ILogger, LogLevel } from "./ILogger";
|
||||||
|
import { isArrayBuffer } from "./Utils";
|
||||||
|
|
||||||
export class NodeHttpClient extends HttpClient {
|
export class NodeHttpClient extends HttpClient {
|
||||||
private readonly logger: ILogger;
|
private readonly logger: ILogger;
|
||||||
|
|
@ -80,7 +81,7 @@ export class NodeHttpClient extends HttpClient {
|
||||||
reject(e);
|
reject(e);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (request.content instanceof ArrayBuffer) {
|
if (isArrayBuffer(request.content)) {
|
||||||
req.write(Buffer.from(request.content));
|
req.write(Buffer.from(request.content));
|
||||||
} else {
|
} else {
|
||||||
req.write(request.content || "");
|
req.write(request.content || "");
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ export class Arg {
|
||||||
/** @private */
|
/** @private */
|
||||||
export function getDataDetail(data: any, includeContent: boolean): string {
|
export function getDataDetail(data: any, includeContent: boolean): string {
|
||||||
let detail = "";
|
let detail = "";
|
||||||
if (data instanceof ArrayBuffer) {
|
if (isArrayBuffer(data)) {
|
||||||
detail = `Binary data of length ${data.byteLength}`;
|
detail = `Binary data of length ${data.byteLength}`;
|
||||||
if (includeContent) {
|
if (includeContent) {
|
||||||
detail += `. Content: '${formatArrayBuffer(data)}'`;
|
detail += `. Content: '${formatArrayBuffer(data)}'`;
|
||||||
|
|
@ -54,6 +54,15 @@ export function formatArrayBuffer(data: ArrayBuffer): string {
|
||||||
return str.substr(0, str.length - 1);
|
return str.substr(0, str.length - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Also in signalr-protocol-msgpack/Utils.ts
|
||||||
|
/** @private */
|
||||||
|
export function isArrayBuffer(val: any): val is ArrayBuffer {
|
||||||
|
return val && typeof ArrayBuffer !== "undefined" &&
|
||||||
|
(val instanceof ArrayBuffer ||
|
||||||
|
// Sometimes we get an ArrayBuffer that doesn't satisfy instanceof
|
||||||
|
(val.constructor && val.constructor.name === "ArrayBuffer"));
|
||||||
|
}
|
||||||
|
|
||||||
/** @private */
|
/** @private */
|
||||||
export async function sendMessage(logger: ILogger, transportName: string, httpClient: HttpClient, url: string, accessTokenFactory: (() => string | Promise<string>) | undefined, content: string | ArrayBuffer, logMessageContent: boolean): Promise<void> {
|
export async function sendMessage(logger: ILogger, transportName: string, httpClient: HttpClient, url: string, accessTokenFactory: (() => string | Promise<string>) | undefined, content: string | ArrayBuffer, logMessageContent: boolean): Promise<void> {
|
||||||
let headers;
|
let headers;
|
||||||
|
|
@ -68,7 +77,7 @@ export async function sendMessage(logger: ILogger, transportName: string, httpCl
|
||||||
|
|
||||||
logger.log(LogLevel.Trace, `(${transportName} transport) sending data. ${getDataDetail(content, logMessageContent)}.`);
|
logger.log(LogLevel.Trace, `(${transportName} transport) sending data. ${getDataDetail(content, logMessageContent)}.`);
|
||||||
|
|
||||||
const responseType = content instanceof ArrayBuffer ? "arraybuffer" : "text";
|
const responseType = isArrayBuffer(content) ? "arraybuffer" : "text";
|
||||||
const response = await httpClient.post(url, {
|
const response = await httpClient.post(url, {
|
||||||
content,
|
content,
|
||||||
headers,
|
headers,
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,6 @@ module.exports = function (modulePath, browserBaseName, options) {
|
||||||
new webpack.IgnorePlugin(/vertx/),
|
new webpack.IgnorePlugin(/vertx/),
|
||||||
new webpack.IgnorePlugin(/NodeHttpClient/),
|
new webpack.IgnorePlugin(/NodeHttpClient/),
|
||||||
new webpack.IgnorePlugin(/eventsource/),
|
new webpack.IgnorePlugin(/eventsource/),
|
||||||
new webpack.IgnorePlugin(/websocket/),
|
|
||||||
],
|
],
|
||||||
externals: options.externals,
|
externals: options.externals,
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue