@ndn/ws-transport
Advanced tools
Comparing version 0.0.20210203 to 0.0.20210930
export * from "./ws-transport"; |
@@ -0,1 +1,2 @@ | ||
/// <reference types="web" /> | ||
export declare function makeWebSocket(uri: string): WebSocket; |
@@ -0,1 +1,2 @@ | ||
/// <reference types="web" /> | ||
export declare function makeWebSocket(uri: string): WebSocket; |
@@ -1,5 +0,4 @@ | ||
import { __importDefault, __importStar } from "tslib"; | ||
import _cjsDefaultImport0 from "ws"; const WsWebSocket = __importDefault(_cjsDefaultImport0).default; | ||
import WsWebSocket from "ws"; | ||
export function makeWebSocket(uri) { | ||
return new WsWebSocket(uri, [], { perMessageDeflate: false }); | ||
} |
import { __importDefault, __importStar } from "tslib"; | ||
import { L3Face, rxFromPacketIterable, Transport } from "@ndn/l3face"; | ||
import _cjsDefaultImport0 from "event-iterator"; const EventIterator = __importDefault(_cjsDefaultImport0).default; | ||
import _cjsDefaultImport0 from "p-event"; const pEvent = __importDefault(_cjsDefaultImport0).default; | ||
import { map } from "streaming-iterables"; | ||
import { makeWebSocket } from "./ws_browser.js"; | ||
@@ -8,32 +9,25 @@ /** WebSocket transport. */ | ||
constructor(sock, opts) { | ||
var _a, _b; | ||
super({ | ||
describe: `WebSocket(${sock.url})`, | ||
}); | ||
super({ describe: `WebSocket(${sock.url})` }); | ||
this.sock = sock; | ||
this.opts = opts; | ||
this.tx = async (iterable) => { | ||
for await (const pkt of iterable) { | ||
if (this.sock.readyState !== this.sock.OPEN) { | ||
throw new Error(`unexpected WebSocket.readState ${this.sock.readyState}`); | ||
try { | ||
for await (const pkt of iterable) { | ||
if (this.sock.readyState !== this.sock.OPEN) { | ||
throw new Error(`unexpected WebSocket.readyState ${this.sock.readyState}`); | ||
} | ||
this.sock.send(pkt); | ||
if (this.sock.bufferedAmount > this.highWaterMark) { | ||
await this.waitForTxBuffer(); | ||
} | ||
} | ||
this.sock.send(pkt); | ||
if (this.sock.bufferedAmount > this.highWaterMark) { | ||
await this.waitForTxBuffer(); | ||
} | ||
} | ||
this.close(); | ||
finally { | ||
this.close(); | ||
} | ||
}; | ||
sock.binaryType = "arraybuffer"; | ||
this.rx = rxFromPacketIterable(new EventIterator(({ push, stop }) => { | ||
const pushHandler = (evt) => push(new Uint8Array(evt.data)); | ||
sock.addEventListener("message", pushHandler); | ||
sock.addEventListener("close", stop); | ||
return () => { | ||
sock.removeEventListener("message", pushHandler); | ||
sock.removeEventListener("close", stop); | ||
}; | ||
})); | ||
this.highWaterMark = (_a = opts.highWaterMark) !== null && _a !== void 0 ? _a : 1024 * 1024; | ||
this.lowWaterMark = (_b = opts.lowWaterMark) !== null && _b !== void 0 ? _b : 16 * 1024; | ||
this.rx = rxFromPacketIterable(map((evt) => new Uint8Array(evt instanceof ArrayBuffer ? evt : evt.data), pEvent.iterator(sock, "message", { resolutionEvents: ["close"] }))); | ||
this.highWaterMark = opts.highWaterMark ?? 1024 * 1024; | ||
this.lowWaterMark = opts.lowWaterMark ?? 16 * 1024; | ||
} | ||
@@ -60,3 +54,3 @@ close() { | ||
* Create a transport and connect to remote endpoint. | ||
* @param uri server URI. | ||
* @param uri server URI or WebSocket object. | ||
* @param opts other options. | ||
@@ -67,4 +61,7 @@ */ | ||
return new Promise((resolve, reject) => { | ||
var _a; | ||
const sock = makeWebSocket(uri); | ||
const sock = typeof uri === "string" ? makeWebSocket(uri) : uri; | ||
if (sock.readyState === sock.OPEN) { | ||
resolve(new WsTransport(sock, opts)); | ||
return; | ||
} | ||
const fail = (err) => { | ||
@@ -76,3 +73,3 @@ sock.close(); | ||
const onabort = () => fail(new Error("abort")); | ||
(_a = signal) === null || _a === void 0 ? void 0 : _a.addEventListener("abort", () => onabort); | ||
signal?.addEventListener("abort", onabort); | ||
const onerror = (evt) => { | ||
@@ -84,6 +81,5 @@ sock.close(); | ||
sock.addEventListener("open", () => { | ||
var _a; | ||
clearTimeout(timeout); | ||
sock.removeEventListener("error", onerror); | ||
(_a = signal) === null || _a === void 0 ? void 0 : _a.removeEventListener("abort", onabort); | ||
signal?.removeEventListener("abort", onabort); | ||
resolve(new WsTransport(sock, opts)); | ||
@@ -95,3 +91,3 @@ }); | ||
/** Create a transport and add to forwarder. */ | ||
WsTransport.createFace = L3Face.makeCreateFace(WsTransport.connect); | ||
WsTransport.createFace = L3Face.makeCreateFace(connect); | ||
})(WsTransport || (WsTransport = {})); |
import { __importDefault, __importStar } from "tslib"; | ||
import { L3Face, rxFromPacketIterable, Transport } from "@ndn/l3face"; | ||
import _cjsDefaultImport0 from "event-iterator"; const EventIterator = __importDefault(_cjsDefaultImport0).default; | ||
import _cjsDefaultImport0 from "p-event"; const pEvent = __importDefault(_cjsDefaultImport0).default; | ||
import { map } from "streaming-iterables"; | ||
import { makeWebSocket } from "./ws_node.js"; | ||
@@ -8,32 +9,25 @@ /** WebSocket transport. */ | ||
constructor(sock, opts) { | ||
var _a, _b; | ||
super({ | ||
describe: `WebSocket(${sock.url})`, | ||
}); | ||
super({ describe: `WebSocket(${sock.url})` }); | ||
this.sock = sock; | ||
this.opts = opts; | ||
this.tx = async (iterable) => { | ||
for await (const pkt of iterable) { | ||
if (this.sock.readyState !== this.sock.OPEN) { | ||
throw new Error(`unexpected WebSocket.readState ${this.sock.readyState}`); | ||
try { | ||
for await (const pkt of iterable) { | ||
if (this.sock.readyState !== this.sock.OPEN) { | ||
throw new Error(`unexpected WebSocket.readyState ${this.sock.readyState}`); | ||
} | ||
this.sock.send(pkt); | ||
if (this.sock.bufferedAmount > this.highWaterMark) { | ||
await this.waitForTxBuffer(); | ||
} | ||
} | ||
this.sock.send(pkt); | ||
if (this.sock.bufferedAmount > this.highWaterMark) { | ||
await this.waitForTxBuffer(); | ||
} | ||
} | ||
this.close(); | ||
finally { | ||
this.close(); | ||
} | ||
}; | ||
sock.binaryType = "arraybuffer"; | ||
this.rx = rxFromPacketIterable(new EventIterator(({ push, stop }) => { | ||
const pushHandler = (evt) => push(new Uint8Array(evt.data)); | ||
sock.addEventListener("message", pushHandler); | ||
sock.addEventListener("close", stop); | ||
return () => { | ||
sock.removeEventListener("message", pushHandler); | ||
sock.removeEventListener("close", stop); | ||
}; | ||
})); | ||
this.highWaterMark = (_a = opts.highWaterMark) !== null && _a !== void 0 ? _a : 1024 * 1024; | ||
this.lowWaterMark = (_b = opts.lowWaterMark) !== null && _b !== void 0 ? _b : 16 * 1024; | ||
this.rx = rxFromPacketIterable(map((evt) => new Uint8Array(evt instanceof ArrayBuffer ? evt : evt.data), pEvent.iterator(sock, "message", { resolutionEvents: ["close"] }))); | ||
this.highWaterMark = opts.highWaterMark ?? 1024 * 1024; | ||
this.lowWaterMark = opts.lowWaterMark ?? 16 * 1024; | ||
} | ||
@@ -60,3 +54,3 @@ close() { | ||
* Create a transport and connect to remote endpoint. | ||
* @param uri server URI. | ||
* @param uri server URI or WebSocket object. | ||
* @param opts other options. | ||
@@ -67,4 +61,7 @@ */ | ||
return new Promise((resolve, reject) => { | ||
var _a; | ||
const sock = makeWebSocket(uri); | ||
const sock = typeof uri === "string" ? makeWebSocket(uri) : uri; | ||
if (sock.readyState === sock.OPEN) { | ||
resolve(new WsTransport(sock, opts)); | ||
return; | ||
} | ||
const fail = (err) => { | ||
@@ -76,3 +73,3 @@ sock.close(); | ||
const onabort = () => fail(new Error("abort")); | ||
(_a = signal) === null || _a === void 0 ? void 0 : _a.addEventListener("abort", () => onabort); | ||
signal?.addEventListener("abort", onabort); | ||
const onerror = (evt) => { | ||
@@ -84,6 +81,5 @@ sock.close(); | ||
sock.addEventListener("open", () => { | ||
var _a; | ||
clearTimeout(timeout); | ||
sock.removeEventListener("error", onerror); | ||
(_a = signal) === null || _a === void 0 ? void 0 : _a.removeEventListener("abort", onabort); | ||
signal?.removeEventListener("abort", onabort); | ||
resolve(new WsTransport(sock, opts)); | ||
@@ -95,3 +91,3 @@ }); | ||
/** Create a transport and add to forwarder. */ | ||
WsTransport.createFace = L3Face.makeCreateFace(WsTransport.connect); | ||
WsTransport.createFace = L3Face.makeCreateFace(connect); | ||
})(WsTransport || (WsTransport = {})); |
@@ -0,3 +1,6 @@ | ||
/// <reference types="web" /> | ||
/// <reference types="node" /> | ||
import { L3Face, Transport } from "@ndn/l3face"; | ||
import type { AbortSignal } from "abort-controller"; | ||
import type WsWebSocket from "ws"; | ||
/** WebSocket transport. */ | ||
@@ -12,3 +15,3 @@ export declare class WsTransport extends Transport { | ||
close(): void; | ||
tx: (iterable: AsyncIterable<Uint8Array>) => Promise<void>; | ||
readonly tx: (iterable: AsyncIterable<Uint8Array>) => Promise<void>; | ||
private waitForTxBuffer; | ||
@@ -30,8 +33,8 @@ reopen(): Promise<WsTransport>; | ||
* Create a transport and connect to remote endpoint. | ||
* @param uri server URI. | ||
* @param uri server URI or WebSocket object. | ||
* @param opts other options. | ||
*/ | ||
function connect(uri: string, opts?: WsTransport.Options): Promise<WsTransport>; | ||
function connect(uri: string | WebSocket | WsWebSocket, opts?: WsTransport.Options): Promise<WsTransport>; | ||
/** Create a transport and add to forwarder. */ | ||
const createFace: L3Face.CreateFaceFunc<typeof connect>; | ||
const createFace: L3Face.CreateFaceFunc<WsTransport, [uri: string | WsWebSocket | WebSocket, opts?: Options | undefined]>; | ||
} |
{ | ||
"name": "@ndn/ws-transport", | ||
"version": "0.0.20210203", | ||
"version": "0.0.20210930", | ||
"description": "NDNts: WebSocket Transport", | ||
@@ -25,9 +25,11 @@ "keywords": [ | ||
"dependencies": { | ||
"@ndn/l3face": "0.0.20210203", | ||
"@ndn/l3face": "0.0.20210930", | ||
"@types/ws": "^8.2.0", | ||
"abort-controller": "^3.0.0", | ||
"event-iterator": "^2.0.0", | ||
"tslib": "^2.1.0", | ||
"ws": "^7.4.3" | ||
"p-event": "^4.2.0", | ||
"streaming-iterables": "^6.0.0", | ||
"tslib": "^2.3.1", | ||
"ws": "^8.2.2" | ||
}, | ||
"types": "lib/mod.d.ts" | ||
} |
@@ -17,2 +17,3 @@ # @ndn/ws-transport | ||
import { Data, Interest, Name } from "@ndn/packet"; | ||
(async () => { | ||
@@ -19,0 +20,0 @@ if (process.env.CI) { return; } |
54
11812
7
226
+ Added@types/ws@^8.2.0
+ Addedp-event@^4.2.0
+ Addedstreaming-iterables@^6.0.0
+ Added@ndn/fw@0.0.20210930(transitive)
+ Added@ndn/l3face@0.0.20210930(transitive)
+ Added@ndn/lp@0.0.20210930(transitive)
+ Added@ndn/packet@0.0.20210930(transitive)
+ Added@ndn/tlv@0.0.20210930(transitive)
+ Added@types/node@22.13.8(transitive)
+ Added@types/ws@8.5.14(transitive)
+ Addedabortable-iterator@3.0.2(transitive)
+ Addedit-pushable@1.4.2(transitive)
+ Addedp-event@4.2.0(transitive)
+ Addedp-finally@1.0.0(transitive)
+ Addedp-timeout@3.2.0(transitive)
+ Addedretry@0.13.1(transitive)
+ Addedstreaming-iterables@6.2.0(transitive)
+ Addedundici-types@6.20.0(transitive)
+ Addedws@8.18.1(transitive)
- Removedevent-iterator@^2.0.0
- Removed@ndn/fw@0.0.20210203(transitive)
- Removed@ndn/l3face@0.0.20210203(transitive)
- Removed@ndn/lp@0.0.20210203(transitive)
- Removed@ndn/packet@0.0.20210203(transitive)
- Removed@ndn/tlv@0.0.20210203(transitive)
- Removedevent-iterator@2.0.0(transitive)
- Removedit-pushable@1.4.0(transitive)
- Removedretry@0.12.0(transitive)
- Removedstreaming-iterables@5.0.4(transitive)
- Removedws@7.5.10(transitive)
Updated@ndn/l3face@0.0.20210930
Updatedtslib@^2.3.1
Updatedws@^8.2.2