【问题标题】:Apollo GraphQL - Handling onConnect and OnDisconnect eventsApollo GraphQL - 处理 onConnect 和 OnDisconnect 事件
【发布时间】:2021-01-21 11:04:30
【问题描述】:
我正在使用Apollo GraphQL 开发一个实时聊天应用程序,我想让客户了解其他客户的最新状态。
意味着我需要对订阅对象(在 app.js 中定义)中的 onConnect 和 OnDisconnect 事件进行处理,并在用户连接或断开连接时向客户端发送订阅事件。
我找不到有关如何执行此操作的解释,我将不胜感激。
【问题讨论】:
标签:
graphql
apollo
apollo-server
graphql-js
graphql-subscriptions
【解决方案1】:
你必须像这样将 onDisconnect 属性与 context.initPromise 一起使用:
onDisconnect: async (webSocket, context) => {
console.log('what is the context?: ', context);
try {
const initialContext = await context.initPromise;
if (
initialContext &&
typeof initialContext === 'object' &&
Reflect.has(initialContext, 'user')
) {
console.log('initialContext: ', initialContext);
}
} catch (err) {
console.log('error', err); // TypeError:
}
}
},
link 和 link2 供参考。
警告:这目前正在我的本地构建中工作,但不适用于我的 heroku 生产构建