Skip to content

Commit dc89251

Browse files
committed
Handle errors on standalone server streams
1 parent 5d99ad3 commit dc89251

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

src/standalone/mockttp-standalone.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,11 @@ export class MockttpStandalone {
227227
const mockServerRouter = express.Router();
228228
this.routers[mockPort] = mockServerRouter;
229229

230-
mockServerRouter.post('/stop', async (req, res) => {
230+
let running = true;
231+
const stopServer = async () => {
232+
if (!running) return;
233+
running = false;
234+
231235
await mockServer.stop();
232236

233237
this.mockServers = _.reject(this.mockServers, mockServer);
@@ -239,7 +243,10 @@ export class MockttpStandalone {
239243
this.streamServers[mockPort].close();
240244
this.streamServers[mockPort].emit('close');
241245
delete this.streamServers[mockPort];
246+
};
242247

248+
mockServerRouter.post('/stop', async (req, res) => {
249+
await stopServer();
243250
res.status(200).send(JSON.stringify({
244251
success: true
245252
}));
@@ -269,6 +276,15 @@ export class MockttpStandalone {
269276
serverSocket.end();
270277
});
271278

279+
// Handle errors by logging & stopping this server instance
280+
const onStreamError = (e: Error) => {
281+
console.error("Error in server standalone stream, shutting down mock server");
282+
console.error(e);
283+
stopServer();
284+
};
285+
wsSocket.on('error', onStreamError);
286+
serverSocket.on('error', onStreamError);
287+
272288
const schema = await this.loadSchema('schema.gql', mockServer, serverSocket);
273289

274290
this.subscriptionServers[mockPort] = SubscriptionServer.create({

0 commit comments

Comments
 (0)