Вот небольшая проблема, с которой я столкнулся и не смог найти много информации в документации. Я пытаюсь создавать личные сообщения в чате. У нас есть следующий код для подписки пользователя на тему:
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
, но не могу реализовать проверки авторизации пользователя (в отношении сообщения).