@@ -5,6 +5,7 @@ import { logError } from "../../common/util"
5
5
import { toVsCodeArgs } from "../cli"
6
6
import { isDevMode } from "../constants"
7
7
import { authenticated , ensureAuthenticated , redirect , self } from "../http"
8
+ import { SocketProxyProvider } from "../socket"
8
9
import { loadAMDModule } from "../util"
9
10
import { Router as WsRouter } from "../wsRouter"
10
11
import { errorHandler } from "./errors"
@@ -13,6 +14,7 @@ export class CodeServerRouteWrapper {
13
14
/** Assigned in `ensureCodeServerLoaded` */
14
15
private _codeServerMain ! : CodeServerLib . IServerAPI
15
16
private _wsRouterWrapper = WsRouter ( )
17
+ private _socketProxyProvider = new SocketProxyProvider ( )
16
18
public router = express . Router ( )
17
19
18
20
public get wsRouter ( ) {
@@ -77,9 +79,10 @@ export class CodeServerRouteWrapper {
77
79
}
78
80
79
81
private $proxyWebsocket = async ( req : WebsocketRequest ) => {
80
- this . _codeServerMain . handleUpgrade ( req , req . socket )
82
+ const wrappedSocket = await this . _socketProxyProvider . createProxy ( req . ws )
83
+ this . _codeServerMain . handleUpgrade ( req , wrappedSocket )
81
84
82
- req . socket . resume ( )
85
+ req . ws . resume ( )
83
86
}
84
87
85
88
//#endregion
@@ -130,5 +133,6 @@ export class CodeServerRouteWrapper {
130
133
131
134
dispose ( ) {
132
135
this . _codeServerMain ?. dispose ( )
136
+ this . _socketProxyProvider . stop ( )
133
137
}
134
138
}
0 commit comments