названием "Битрикс", делаю чаты используя его апи.
При отправке сообщения юзером я отправляю запрос на сервер, который должен мне вернуть id сообщения. Когда я получаю этот id я его подмениваю вместо моего рандомного.
В этот момент сервер оповещает сокет и сокет отправляет мне это сообщение, когда я получаю сообщение с сокета я чекаю наличие этого айдишника в списке сообщений, если оно есть - не добавляю его. Ну это весь процесс, грубо говоря.
И вот через раз-два срабатывают случаи, что сокет возвращает быстрее данные, чем запрос и из-за этого я не успеваю подменить айдишник и сообщение дублируется у меня локально. Я запринтил время DateTime.now, когда я дождался запрос (1) и когда пришел ответ с сокета (2)
1) 2023-07-25 18:08:46.852911
2) 2023-07-25 18:08:46.845082
Возможно ли вообще такое? Или все-таки это моя ошибка?
возможно, почему нет
С похожим сталкивался, для вебсокета фильтровать можно попробовать по senderId ! = myId
Не слишком костыльно?)
Задержка вот в 10мс спасает, но это пиздец вроде бы
Почему же? Просто не пропускаю сообщение из вебсокета, оно и так через апи дублируется. Если правильно понял кейс
Задержка это более костыльно)
А если я с двух устройств сижу? На втором не отобразятся мои сообщентя что-ли?
Можете копить сообщения от своего аккаунта в буфере, пока идет отправка сообщений. Вариантов много.
Обсуждают сегодня