(
route: WebSocketRoute | BrowserWebsocketRoute,
handler: WebSocketRoute['handler'] | BrowserWebsocketRoute['handler'],
)
| 239 | } |
| 240 | |
| 241 | protected wrapWebSocketHandler( |
| 242 | route: WebSocketRoute | BrowserWebsocketRoute, |
| 243 | handler: WebSocketRoute['handler'] | BrowserWebsocketRoute['handler'], |
| 244 | ) { |
| 245 | return async (req: Request, socket: stream.Duplex, head: Buffer) => { |
| 246 | if (!isConnected(socket)) { |
| 247 | this.log.warn(`WebSocket Request has closed prior to running`); |
| 248 | return ROUTE_DID_NOT_RUN; |
| 249 | } |
| 250 | const logger = new this.logger(route.name, req); |
| 251 | if ( |
| 252 | Object.getPrototypeOf(route) instanceof BrowserWebsocketRoute && |
| 253 | 'browser' in route && |
| 254 | route.browser |
| 255 | ) { |
| 256 | const browser = await this.browserManager.getBrowserForRequest( |
| 257 | req, |
| 258 | route, |
| 259 | logger, |
| 260 | ); |
| 261 | |
| 262 | if (!isConnected(socket)) { |
| 263 | this.log.warn(`WebSocket Request has closed prior to running`); |
| 264 | this.browserManager.complete(browser); |
| 265 | return ROUTE_DID_NOT_RUN; |
| 266 | } |
| 267 | |
| 268 | if (!browser) { |
| 269 | return writeResponse(socket, 500, `Error loading the browser.`); |
| 270 | } |
| 271 | |
| 272 | try { |
| 273 | this.log.trace(`Running found WebSocket handler.`); |
| 274 | await handler(req, socket, head, logger, browser); |
| 275 | } finally { |
| 276 | this.log.trace(`WebSocket Request handler has finished.`); |
| 277 | this.browserManager.complete(browser); |
| 278 | } |
| 279 | return; |
| 280 | } |
| 281 | return (handler as WebSocketRoute['handler'])(req, socket, head, logger); |
| 282 | }; |
| 283 | } |
| 284 | |
| 285 | public registerHTTPRoute( |
| 286 | route: HTTPRoute | BrowserHTTPRoute, |
no test coverage detected