@@ -2,23 +2,20 @@ import { PacketStream } from "./packet-stream";
22import * as net from "net" ;
33import * as ws from "ws" ;
44import temp = require( "temp" ) ;
5- import * as helpers from "../../common/helpers" ;
65
76export class SocketProxyFactory implements ISocketProxyFactory {
87 constructor ( private $logger : ILogger ,
98 private $config : IConfiguration ,
109 private $options : IOptions ) { }
1110
12- public createTCPSocketProxy ( factory : ( ) => net . Socket ) : any {
13- let socketFactory = ( callback : ( _socket : net . Socket ) => void ) => helpers . connectEventually ( factory , callback ) ;
14-
11+ public createTCPSocketProxy ( factory : ( ) => Promise < net . Socket > ) : any {
1512 this . $logger . info ( "\nSetting up proxy...\nPress Ctrl + C to terminate, or disconnect.\n" ) ;
1613
1714 let server = net . createServer ( {
1815 allowHalfOpen : true
1916 } ) ;
2017
21- server . on ( "connection" , ( frontendSocket : net . Socket ) => {
18+ server . on ( "connection" , async ( frontendSocket : net . Socket ) => {
2219 this . $logger . info ( "Frontend client connected." ) ;
2320
2421 frontendSocket . on ( "end" , ( ) => {
@@ -28,33 +25,32 @@ export class SocketProxyFactory implements ISocketProxyFactory {
2825 }
2926 } ) ;
3027
31- socketFactory ( ( backendSocket : net . Socket ) => {
32- this . $logger . info ( "Backend socket created." ) ;
28+ const backendSocket : net . Socket = await factory ( ) ;
29+ this . $logger . info ( "Backend socket created." ) ;
30+
31+ backendSocket . on ( "end" , ( ) => {
32+ this . $logger . info ( "Backend socket closed!" ) ;
33+ if ( ! ( this . $config . debugLivesync && this . $options . watch ) ) {
34+ process . exit ( 0 ) ;
35+ }
36+ } ) ;
3337
34- backendSocket . on ( "end" , ( ) => {
35- this . $logger . info ( "Backend socket closed!" ) ;
36- if ( ! ( this . $config . debugLivesync && this . $options . watch ) ) {
37- process . exit ( 0 ) ;
38- }
39- } ) ;
40-
41- frontendSocket . on ( "close" , ( ) => {
42- console . log ( "frontend socket closed" ) ;
43- if ( ! ( < any > backendSocket ) . destroyed ) {
44- backendSocket . destroy ( ) ;
45- }
46- } ) ;
47- backendSocket . on ( "close" , ( ) => {
48- console . log ( "backend socket closed" ) ;
49- if ( ! ( < any > frontendSocket ) . destroyed ) {
50- frontendSocket . destroy ( ) ;
51- }
52- } ) ;
53-
54- backendSocket . pipe ( frontendSocket ) ;
55- frontendSocket . pipe ( backendSocket ) ;
56- frontendSocket . resume ( ) ;
38+ frontendSocket . on ( "close" , ( ) => {
39+ console . log ( "frontend socket closed" ) ;
40+ if ( ! ( < any > backendSocket ) . destroyed ) {
41+ backendSocket . destroy ( ) ;
42+ }
5743 } ) ;
44+ backendSocket . on ( "close" , ( ) => {
45+ console . log ( "backend socket closed" ) ;
46+ if ( ! ( < any > frontendSocket ) . destroyed ) {
47+ frontendSocket . destroy ( ) ;
48+ }
49+ } ) ;
50+
51+ backendSocket . pipe ( frontendSocket ) ;
52+ frontendSocket . pipe ( backendSocket ) ;
53+ frontendSocket . resume ( ) ;
5854 } ) ;
5955
6056 let socketFileLocation = temp . path ( { suffix : ".sock" } ) ;
0 commit comments