@@ -2,23 +2,20 @@ import { PacketStream } from "./packet-stream";
2
2
import * as net from "net" ;
3
3
import * as ws from "ws" ;
4
4
import temp = require( "temp" ) ;
5
- import * as helpers from "../../common/helpers" ;
6
5
7
6
export class SocketProxyFactory implements ISocketProxyFactory {
8
7
constructor ( private $logger : ILogger ,
9
8
private $config : IConfiguration ,
10
9
private $options : IOptions ) { }
11
10
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 {
15
12
this . $logger . info ( "\nSetting up proxy...\nPress Ctrl + C to terminate, or disconnect.\n" ) ;
16
13
17
14
let server = net . createServer ( {
18
15
allowHalfOpen : true
19
16
} ) ;
20
17
21
- server . on ( "connection" , ( frontendSocket : net . Socket ) => {
18
+ server . on ( "connection" , async ( frontendSocket : net . Socket ) => {
22
19
this . $logger . info ( "Frontend client connected." ) ;
23
20
24
21
frontendSocket . on ( "end" , ( ) => {
@@ -28,33 +25,32 @@ export class SocketProxyFactory implements ISocketProxyFactory {
28
25
}
29
26
} ) ;
30
27
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
+ } ) ;
33
37
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
+ }
57
43
} ) ;
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 ( ) ;
58
54
} ) ;
59
55
60
56
let socketFileLocation = temp . path ( { suffix : ".sock" } ) ;
0 commit comments