Я работаю над модулем чата, для которого бэкэнд - это Java, а фронтенд - это Angular. Процесс чата работает следующим образом:
- Подключение к клиенту Stomp
- подписка на URL канала, например, для:
queue/user-{userId}
- Сохранение сообщения на сервере с использованием
stompclient->send('savemessage', {}, message)
- Сервер отправляет подтверждение, что сообщение сохранено
- Я отправляю сообщение пользователю из канала брокера, например,
stompclient->send('queue/user-{toUserId}', {}, message)
toUserId
, если подписан с использованием queue/user-{toUserId}
в канале, затем он получает сообщение. Работает нормально, когда toUserId
подключен и подписан только один раз. Проблема возникает, когда я открываю другое соединение и подписываюсь на toUserId
в другом браузере или мобильном приложении.
Проблема в том, что userId отправляет сообщение один раз, но toUserId
получает сообщения 2 раза, так как открыто 2 подключения / подписки. Кто-нибудь сталкивался с такой ситуацией ранее?
Ниже приведены скриншоты:
- Получение сообщения:
- Отправить сообщение: