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');