Recover from malformed JSON
Summary: Following up on D34787674 (f85def32fb).
Reviewed By: aigoncharov
Differential Revision: D34930249
fbshipit-source-id: f209a638c1281957fd2b03b6fc50389bd98bc5f6
This commit is contained in:
committed by
Facebook GitHub Bot
parent
04235e6086
commit
9c5d1a32c5
@@ -14,6 +14,11 @@ type GenericWebSocketMessage<E = string, T = unknown> = {
|
||||
payload: T;
|
||||
};
|
||||
|
||||
export type GenericWebSocketError = GenericWebSocketMessage<
|
||||
'error',
|
||||
{message: string}
|
||||
>;
|
||||
|
||||
export type ExecWebSocketMessage = GenericWebSocketMessage<
|
||||
'exec',
|
||||
{
|
||||
|
||||
@@ -13,6 +13,7 @@ import {
|
||||
ExecResponseWebSocketMessage,
|
||||
ExecResponseErrorWebSocketMessage,
|
||||
ServerEventWebSocketMessage,
|
||||
GenericWebSocketError,
|
||||
} from 'flipper-common';
|
||||
import {FlipperServerImpl} from 'flipper-server-core';
|
||||
import {WebSocketServer} from 'ws';
|
||||
@@ -42,9 +43,23 @@ export function startSocketServer(
|
||||
flipperServer.onAny(onServerEvent);
|
||||
|
||||
client.on('message', (data) => {
|
||||
const {event, payload} = JSON.parse(
|
||||
data.toString(),
|
||||
) as ClientWebSocketMessage;
|
||||
let [event, payload]: [event: string | null, payload: any | null] = [
|
||||
null,
|
||||
null,
|
||||
];
|
||||
try {
|
||||
({event, payload} = JSON.parse(
|
||||
data.toString(),
|
||||
) as ClientWebSocketMessage);
|
||||
} catch (err) {
|
||||
console.warn('flipperServer -> onMessage: failed to parse JSON', err);
|
||||
const response: GenericWebSocketError = {
|
||||
event: 'error',
|
||||
payload: {message: `Failed to parse JSON request: ${err}`},
|
||||
};
|
||||
client.send(JSON.stringify(response));
|
||||
return;
|
||||
}
|
||||
|
||||
switch (event) {
|
||||
case 'exec': {
|
||||
|
||||
Reference in New Issue
Block a user