Я буквально только что создал производственное приложение, используя React и Socket.io для отправки сообщений пользователям в определенной комнате, когда пользователь отправляет сообщение определенному разговору.Я не использовал push-уведомления, потому что я создавал веб-приложение, а не мобильное приложение, но ваше упоминание о push-уведомлениях является логическим мобильным эквивалентом отправки информации о сообщении непосредственно всем пользователям в комнате.Насколько я рассмотрел доступные варианты в моей ситуации, я думаю, что вы рассмотрели все доступные варианты выше.
При этом, как вы упомянули, есть плюсы и минусы для обоих подходов (отправкавсе сообщение напрямую всем пользователям или отправьте небольшое уведомление всем пользователям, чтобы получить все последние сообщения).Преимущество первого варианта заключается в том, что сообщение сразу же отправляется всем пользователям, поэтому они получат его намного быстрее, чем во втором сценарии.Но если вы используете Socket.io таким образом, что, например, вы отправляете сообщения всем пользователям энергозависимым образом, то для первого сценария было бы то, что пользователи-клиенты могут не получить сообщение из-за сетисбой и то сообщение, которое было отправлено, не появятся в их сообщениях беседы.Кроме того, отправка всей информации сообщения напрямую не дает клиентскому приложению контроля над тем, когда получать ВСЕ данные сообщения.С другой стороны, преимуществом последнего сценария будет то, что всем пользователям в разговоре будет отправлено только небольшое сообщение, что позволит сэкономить на объеме передаваемых данных, а затем эти пользователи смогут запросить последние сообщения на досуге, так какклиентское приложение считает целесообразным.Недостатком в этом случае будет то, что фактическое отправленное сообщение не попадет в клиентские приложения немедленно, что приведет к некоторой задержке между отправкой и получением сообщения.Но, конечно, такую вещь было бы трудно заметить, если бы два клиентских приложения не были открыты на двух отдельных устройствах рядом, а кто-то наблюдал с помощью секундомера, чтобы проверить время задержки.
Итак, я считаю, что у вас естьперечислил все ваши варианты выше.Теперь все зависит от того, какой сценарий, по вашему мнению, подходит для вашей прикладной ситуации, исходя из плюсов и минусов этих сценариев.