Apollo-server-express Server Setup for Subscriptions?

My setup:

import { ApolloServer } from "apollo-server-express";
import { WebApp } from "meteor/webapp";
import { makeExecutableSchema } from "@graphql-tools/schema";
import { WebSocketServer } from "ws";
import { useServer } from "graphql-ws/lib/use/ws";

// create and use the websocket server to listen subscriptions
const wsServer = new WebSocketServer({
  noServer: true,
  path: "/graphql",
});
WebApp.httpServer.on("upgrade", function upgrade(request, socket, head) {
  if (!request.url) {
    return;
  }
  switch (request.url) {
    case "/graphql":
      return wsServer.handleUpgrade(request, socket, head, function done(ws) {
        wsServer.emit("connection", ws, request);
      });
    default:
      break;
  }
});

useServer(
  {
    context: async (ctx, msg, args) => {
      const req = ctx.extra.request;

      const loginToken = ctx.connectionParams?.authorization;
      const userAgent = req.headers["user-agent"];
      const clientAddress = getIpAddressFromRequestHeader(req.headers);
      const user =
        typeof loginToken === "string" ? getUserByToken(loginToken) : null;
      const device =
        typeof loginToken === "string"
          ? getDeviceByLoginToken(user?.devices, loginToken)
          : undefined;

      return {
        loginToken,
        user: user || null,
        device,
        userAgent,
        clientAddress,
      };
    },
    schema,
  },
  wsServer
);