graphql test server with websocket
by Niranjan
JavaScript
var express = require("express");
var graphqlHTTP = require("express-graphql");
var { buildSchema } = require("graphql");
var { SubscriptionManager,PubSub } = require("graphql-subscriptions");
var { createServer } = require("http");
var { SubscriptionServer } = require("subscriptions-transport-ws");
var schema = buildSchema(`
type Query {
age: String
}
`);
var root = {
age: () => {
return 'Get Age of Asset';
},
};
const pubsub = new PubSub();
const subscriptionManager = new SubscriptionManager({
schema,
pubsub
});
const WS_PORT = 5000;
// Create WebSocket listener server
const websocketServer = createServer((request, response) => {
response.writeHead(404);
response.end();
});
// Bind it to port and start listening
websocketServer.listen(WS_PORT, () => console.log(
`Websocket Server is now running on http://localhost:${WS_PORT}`
));
const subscriptionServer = new SubscriptionServer(
{
onConnect: function async(connectionParams) {
// Implement if you need to handle and manage connection
},
subscriptionManager: subscriptionManager
},
{
server: websocketServer,
path: '/'
}
);
var app = express();
app.use('/graphql', graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: true,
}));
app.listen(4000);
console.log('Running a GraphQL API server at localhost:4000/graphql');