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':{
路径:'/订阅',
在 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
:
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':{ 路径:'/订阅',