これは私が直面した小さな問題であり、ドキュメントには多くの情報が見つかりませんでした。プライベート チャット メッセージを作成しようとしています。ユーザーをトピックにサブスクライブする次のコードがあります。
export const resolvers = {
Subscription: {
somethingChanged: {
subscribe: () => pubsub.asyncIterator('chat_messages'),
},
},
}
そして公開する
pubsub.publish('chat_messages', { somethingChanged: { sender_id: 1, receiver_id: 2, message: 'test' }});
ユーザーが認証されていることを確認するために onConnect を使用しました
const server = new ApolloServer({
typeDefs,
resolvers,
subscriptions: {
onConnect: (connectionParams, webSocket) => {
...
if (!authenticated) throw error
...
},
},
...
})
これは、たとえば、ユーザーを特定のトピックにサブスクライブしたい場合にうまく機能します。しかし、プライベートなユーザー間通信を実装するにはどうすればよいでしょうか? 試してみましたwithFilter
が、(メッセージに関して) ユーザー固有の承認チェックを実装できないようです。