*Add option to emulate a websocket

This commit is contained in:
Derrick Hammer 2023-02-25 22:10:00 -05:00
parent 11550659d0
commit 68c12f22be
Signed by: pcfreak30
GPG Key ID: C997C339BE476FF2
1 changed files with 9 additions and 0 deletions

View File

@ -16,6 +16,7 @@ interface SocketOptions {
data: any,
cb: Callback
) => void;
emulateWebsocket?: boolean;
}
export default class Socket extends Duplex {
@ -29,6 +30,7 @@ export default class Socket extends Duplex {
declare readable: true;
declare writable: true;
public remotePublicKey: Uint8Array;
private _emulateWebsocket: boolean;
constructor({
allowHalfOpen = false,
@ -36,12 +38,14 @@ export default class Socket extends Duplex {
remotePort,
remotePublicKey,
write,
emulateWebsocket = false,
}: SocketOptions = {}) {
super({ write });
this._allowHalfOpen = allowHalfOpen;
this.remoteAddress = remoteAddress;
this.remotePort = remotePort;
this.remotePublicKey = remotePublicKey;
this._emulateWebsocket = emulateWebsocket;
if (remoteAddress) {
const type = Socket.isIP(remoteAddress);
@ -51,6 +55,11 @@ export default class Socket extends Duplex {
this.remoteFamily = type === 6 ? IPV6 : IPV4;
}
if (this._emulateWebsocket) {
// @ts-ignore
this.addEventListener("data", (data: any) => this.emit("message", data));
}
}
private _connecting: boolean;