Nestjs GraphQL 订阅 onConnect 和 onDisconnect 回调

Nestjs GraphQL subscriptions onConnect & onDisconnect callbacks

在 Nestjs 中是否有挂接到 onConnect 和 onDisconnect lifecycle-events 的方法?

原来你可以在 graphql 配置的订阅部分提供它们

 subscriptions: {
    keepAlive: subscriptionsTimeout,
    onConnect: (connectionParams, websocket, context) => {
      console.log(`connectionParams: ${connectionParams}, websocket: ${JSON.stringify(websocket)}}, context ${JSON.stringify(context)}`);
    },
    onDisconnect: ( websocket, context) => {
      console.log(`websocket: ${JSON.stringify(websocket)}}, context ${JSON.stringify(context)}`);
    }
  },

在文档中,如果您正在使用 graph-ws,您会看到它建议使用以下内容:

subscriptions: {
        'graphql-ws': true
}

然而,我不得不深入研究如何真正让它与你所说的 lifecycle-events 一起工作。如果您使用 graphql-ws:

,下面是 Nestjs 使用 TypeScript 的示例
subscriptions: {
        'graphql-ws': {
          onConnect: (context: Context) => {
            const { connectionParams, subscriptions } = context;
            console.log(
              `connectionParams: ${connectionParams}, subscriptions: ${JSON.stringify(
                subscriptions,
              )}}, context ${JSON.stringify(context)}`,
            );
          },
          onDisconnect: (context: Context) => {
            const { connectionParams, subscriptions } = context;
            console.log(
              `connectionParams: ${JSON.stringify(
                connectionParams,
              )}}, subscriptions: ${JSON.stringify(
                subscriptions,
              )}, context ${JSON.stringify(context)}`,
            );
          },

像这样添加路径: 'graphql-ws':{ 路径:'/订阅',