diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 7f43ca4..6fd57d7 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@pushrocks/smartproxy', - version: '3.0.57', + version: '3.0.58', description: 'a proxy for handling high workloads of proxying' } diff --git a/ts/smartproxy.classes.networkproxy.ts b/ts/smartproxy.classes.networkproxy.ts index 0e9669e..b192f46 100644 --- a/ts/smartproxy.classes.networkproxy.ts +++ b/ts/smartproxy.classes.networkproxy.ts @@ -250,21 +250,28 @@ JNj2Dr5H0XoLFFnvuvzcRbhlJ9J67JzR+7g= console.log(`wss proxy: got connection for wsc for https://${reqArg.headers.host}${reqArg.url}`); let wsOutgoing: plugins.wsDefault; + + const outGoingDeferred = plugins.smartpromise.defer(); + try { wsOutgoing = new plugins.wsDefault(`ws://${this.router.routeReq(reqArg).destinationIp}:${this.router.routeReq(reqArg).destinationPort}${reqArg.url}`); - console.log('wss proxy: initiated outgoing proxy') + console.log('wss proxy: initiated outgoing proxy'); + wsOutgoing.on('open', async () => { + outGoingDeferred.resolve(); + }) } catch (err) { console.log(err); wsIncoming.terminate(); return; } - wsIncoming.on("message", (message, isBinary) => { + wsIncoming.on("message", async (message, isBinary) => { + await outGoingDeferred.promise; // console.log("client to upstream", message); wsOutgoing.send(message, { binary: isBinary }); }); - wsOutgoing.on("message", (message, isBinary) => { + wsOutgoing.on("message", async (message, isBinary) => { // console.log("upstream to client", message); wsIncoming.send(message, { binary: isBinary }); });