Compare commits

...

2 Commits

6 changed files with 24 additions and 10 deletions

View File

@ -10,7 +10,7 @@ export interface MultiSocketProxyOptions extends ProxyOptions {
allowedPorts?: number[]; allowedPorts?: number[];
} }
export default class MultiSocketProxy extends Proxy { export default class MultiSocketProxy extends Proxy {
handlePeer({ peer, muxer, ...options }: DataSocketOptions & PeerOptions): void; handlePeer({ peer, muxer, ...options }: DataSocketOptions & PeerOptions): Promise<void>;
private socketClass; private socketClass;
private _peers; private _peers;
private _nextPeer; private _nextPeer;

View File

@ -55,14 +55,16 @@ const errorSocketEncoding = {
}; };
const nextSocketId = (0, util_js_1.idFactory)(1); const nextSocketId = (0, util_js_1.idFactory)(1);
class MultiSocketProxy extends proxy_js_1.default { class MultiSocketProxy extends proxy_js_1.default {
handlePeer({ peer, muxer, ...options }) { async handlePeer({ peer, muxer, ...options }) {
new peer_js_1.default({ const conn = new peer_js_1.default({
...this.socketOptions, ...this.socketOptions,
proxy: this, proxy: this,
peer, peer,
muxer, muxer,
...options, ...options,
}).init(); });
await conn.init();
this.emit("peer", conn);
} }
socketClass; socketClass;
_peers = new Map(); _peers = new Map();

4
dist/proxy.d.ts vendored
View File

@ -1,11 +1,13 @@
/// <reference types="node" />
import { DataSocketOptions, PeerOptions } from "./peer.js"; import { DataSocketOptions, PeerOptions } from "./peer.js";
import EventEmitter from "events";
export interface ProxyOptions extends DataSocketOptions { export interface ProxyOptions extends DataSocketOptions {
swarm: any; swarm: any;
protocol: string; protocol: string;
listen?: boolean; listen?: boolean;
autostart?: boolean; autostart?: boolean;
} }
export default abstract class Proxy { export default abstract class Proxy extends EventEmitter {
protected _listen: any; protected _listen: any;
protected _autostart: boolean; protected _autostart: boolean;
constructor({ swarm, protocol, onopen, onreceive, onsend, onclose, onchannel, listen, autostart, emulateWebsocket, }: ProxyOptions); constructor({ swarm, protocol, onopen, onreceive, onsend, onclose, onchannel, listen, autostart, emulateWebsocket, }: ProxyOptions);

4
dist/proxy.js vendored
View File

@ -4,10 +4,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const protomux_1 = __importDefault(require("protomux")); const protomux_1 = __importDefault(require("protomux"));
class Proxy { const events_1 = __importDefault(require("events"));
class Proxy extends events_1.default {
_listen; _listen;
_autostart; _autostart;
constructor({ swarm, protocol, onopen, onreceive, onsend, onclose, onchannel, listen = false, autostart = false, emulateWebsocket = false, }) { constructor({ swarm, protocol, onopen, onreceive, onsend, onclose, onchannel, listen = false, autostart = false, emulateWebsocket = false, }) {
super();
this._swarm = swarm; this._swarm = swarm;
this._protocol = protocol; this._protocol = protocol;
this._listen = listen; this._listen = listen;

View File

@ -70,14 +70,20 @@ const errorSocketEncoding = {
const nextSocketId = idFactory(1); const nextSocketId = idFactory(1);
export default class MultiSocketProxy extends Proxy { export default class MultiSocketProxy extends Proxy {
handlePeer({ peer, muxer, ...options }: DataSocketOptions & PeerOptions) { async handlePeer({
new Peer({ peer,
muxer,
...options
}: DataSocketOptions & PeerOptions) {
const conn = new Peer({
...this.socketOptions, ...this.socketOptions,
proxy: this, proxy: this,
peer, peer,
muxer, muxer,
...options, ...options,
}).init(); });
await conn.init();
this.emit("peer", conn);
} }
private socketClass: any; private socketClass: any;
private _peers: Map<string, PeerEntity> = new Map<string, PeerEntity>(); private _peers: Map<string, PeerEntity> = new Map<string, PeerEntity>();

View File

@ -1,5 +1,6 @@
import Protomux from "protomux"; import Protomux from "protomux";
import { DataSocketOptions, PeerOptions } from "./peer.js"; import { DataSocketOptions, PeerOptions } from "./peer.js";
import EventEmitter from "events";
export interface ProxyOptions extends DataSocketOptions { export interface ProxyOptions extends DataSocketOptions {
swarm: any; swarm: any;
@ -8,7 +9,7 @@ export interface ProxyOptions extends DataSocketOptions {
autostart?: boolean; autostart?: boolean;
} }
export default abstract class Proxy { export default abstract class Proxy extends EventEmitter {
protected _listen: any; protected _listen: any;
protected _autostart: boolean; protected _autostart: boolean;
@ -24,6 +25,7 @@ export default abstract class Proxy {
autostart = false, autostart = false,
emulateWebsocket = false, emulateWebsocket = false,
}: ProxyOptions) { }: ProxyOptions) {
super();
this._swarm = swarm; this._swarm = swarm;
this._protocol = protocol; this._protocol = protocol;
this._listen = listen; this._listen = listen;