Нужна рекомендация относительно rabbitmq - PullRequest
0 голосов
/ 31 мая 2019

Я создаю приложение чата, в котором у меня есть API отдыха и сервер socket.io. Я хочу, чтобы пользователь отправлял сообщения в API отдыха. API будет сохранять эти сообщения в базе данных, а затем отправлять их. сообщения в очередь rabbimq, тогда rabbitmq отправит эти сообщения в socket.io, если принимающий пользователь подключен к сети, иначе сообщение будет сохранено в очереди, и когда пользователь подключится к сети, пользователь удалит эти сообщения из очереди, как бы я ни хотел чтобы реализовать это так, как WhatsApp, сообщения будут для конкретного пользователя, и пользователь будет получать только те сообщения, которые предназначены для них, т.е. я не хочу транслировать сообщения, я хочу, чтобы только конкретный пользователь получал эти сообщения

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

1

Для отправки сообщений на определенные сокеты вы можете использовать комнаты : io.to(room).emit(msg).Каждый сокет является частью комнаты с тем же именем, что и идентификатор сокета.

2

Я бы не стал ждать, пока сообщение будет записано в базу данных.перед отправкой через socket.io ваш API может сделать оба сразу.Когда пользователь подключается, он может получить свои сообщения из базы данных, а затем прослушать новые сообщения в своем сокете.

0 голосов
/ 31 мая 2019

Чат должен быть приложением почти реального времени, есть несколько способов моделирования такой вещи. Прежде всего, вы можете использовать HTTP pooling, HTTP long pooling, но некоторое время назад там, где был введен новый протокол уровня приложения - web socket. Это было бы хорошо для вас, вместе с Stomp messages. Здесь вы можете проверить краткий пример. И отправка сообщений определенным пользователям также поддерживается "из коробки" пример

...