Сервер отправил события для веб-приложения типа социальных сетей: стратегия получения данных? - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь понять, как создать веб-приложение React, содержащее сообщения и комментарии. Мой вопрос: когда пользователь отправляет новый комментарий к сообщению (или предпринимает какое-то другое действие, например, любит комментировать, удаляет комментарий и т. Д. c.), Как я должен получить данные для обновления пользовательского интерфейса? Я думаю о следующих подходах:

  1. Сервер отправляет только новые данные, используя отправленные сервером события. Например, если пользователь создает новый комментарий, отправьте только новый комментарий, чтобы добавить его к состоянию компонента, или, если пользователь удалит комментарий, отправьте только идентификатор комментария для удаления из состояния компонента. Этот подход кажется немного утомительным, так как мне нужно было бы создавать отдельные события с соответствующими логами пользовательского интерфейса c для каждого из возможных действий, которые может предпринять пользователь. Кроме того, мне интересно, следует ли мне беспокоиться о возможных условиях гонки, которые могут привести к тому, что пользовательский интерфейс не синхронизируется c с базой данных?

  2. Сервер уведомляет пользовательский интерфейс о действие пользователя, при котором пользовательский интерфейс повторно выбирает все комментарии к записи. Я думаю, что этот подход кажется более безопасным, чем первый, с точки зрения обеспечения того, что пользовательский интерфейс точно отражает состояние базы данных. Но стоит ли беспокоиться о скорости выполнения / стоимости получения всех комментариев поста каждый раз? И будет ли на самом деле большая разница в скорости между первым и вторым подходами? По крайней мере, в обоих подходах состояние компонента (содержащее все комментарии к записи) необходимо полностью скопировать для обновлений setState, даже если необходимо изменить только один комментарий, что звучит довольно дорого.

Кто-нибудь знает, как такой сайт, как Facebook, решает эту проблему? В частности, когда вы нажимаете «просмотреть дополнительные комментарии» к сообщению, только ли Facebook получает эти дополнительные комментарии?

...