Skip to content

Instantly share code, notes, and snippets.

@realies
Created February 12, 2021 22:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save realies/e4e0d1c3c0f97f67aef2ef56868a027e to your computer and use it in GitHub Desktop.
Save realies/e4e0d1c3c0f97f67aef2ef56868a027e to your computer and use it in GitHub Desktop.
const express = require('express');
const { ApolloServer, gql } = require('apollo-server-express');
const app = express();
app.get('/', async (req, res) => {
await new Promise(resolve => setTimeout(resolve, 5000));
res.send('ok');
});
const typeDefs = gql`
type Query {
hello: String
}
`;
const resolvers = {
Query: {
hello: async () => {
await new Promise(resolve => setTimeout(resolve, 5000));
return 'Hello world!'
},
},
};
const apollo = new ApolloServer({ typeDefs, resolvers });
apollo.applyMiddleware({ app });
const server = app.listen(3000);
server.keepAliveTimeout = 1;
const sockets = [];
server.on('connection', socket => {
sockets.push(socket);
socket.on('close', () => sockets.splice(sockets.indexOf(socket), 1));
});
process.on('SIGINT', async () => {
await server.close();
await apollo.stop();
while(sockets.length !== 0) {
console.log(`sockets: ${sockets.length}`);
await new Promise(resolve => setTimeout(resolve, 100));
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment