Track WS server error

Summary: This is currently done by querying the 'console-log' event. Instead, make it type safe and official.

Reviewed By: antonk52

Differential Revision: D50927803

fbshipit-source-id: e0488782dd584e36b6f742f9892fc09ffaf62469
This commit is contained in:
Lorenzo Blasa
2023-11-02 10:42:15 -07:00
committed by Facebook GitHub Bot
parent 8f1b4ffa1c
commit d5a0c206f2
2 changed files with 5 additions and 3 deletions

View File

@@ -29,6 +29,7 @@ import {Server} from 'net';
import {serializeError} from 'serialize-error'; import {serializeError} from 'serialize-error';
import {WSCloseCode} from '../utils/WSCloseCode'; import {WSCloseCode} from '../utils/WSCloseCode';
import {recorder} from '../recorder'; import {recorder} from '../recorder';
import {tracker} from '../tracker';
export interface ConnectionCtx { export interface ConnectionCtx {
clientQuery?: ClientQuery; clientQuery?: ClientQuery;
@@ -63,11 +64,11 @@ class ServerWebSocket extends ServerWebSocketBase {
// We do not need to listen to http server's `error` because it is propagated to WS // We do not need to listen to http server's `error` because it is propagated to WS
// https://github.com/websockets/ws/blob/a3a22e4ed39c1a3be8e727e9c630dd440edc61dd/lib/websocket-server.js#L109 // https://github.com/websockets/ws/blob/a3a22e4ed39c1a3be8e727e9c630dd440edc61dd/lib/websocket-server.js#L109
const onConnectionError = (error: Error) => { const onConnectionError = (error: Error) => {
const message = JSON.stringify(serializeError(error));
tracker.track('server-ws-server-error', {port, error: message});
reject( reject(
new Error( new Error(
`Unable to start server at port ${port} due to ${JSON.stringify( `Unable to start server at port ${port} due to ${message}`,
serializeError(error),
)}`,
), ),
); );
}; };

View File

@@ -48,6 +48,7 @@ type TrackerEvents = {
}; };
'server-socket-already-in-use': {}; 'server-socket-already-in-use': {};
'server-open-ui': {browser: boolean; hasToken: boolean}; 'server-open-ui': {browser: boolean; hasToken: boolean};
'server-ws-server-error': {port: number; error: string};
'browser-connection-created': { 'browser-connection-created': {
successful: boolean; successful: boolean;
timeMS: number; timeMS: number;