SSE подходит для одностороннего потока событий от сервера, WebSocket — для постоянного двустороннего обмена. Выбор зависит от сценария, а не общего превосходства протокола.
Для потока ответа сервера часто достаточно SSE или HTTP-streaming, а WebSocket нужен при постоянном двустороннем обмене. Генерацию лучше отделить от клиентского соединения.
Разделите транспорт, состояние документа и UI. Храните неподтверждённые операции, повторяйте их с прежним operationId и применяйте серверную версию только после проверки конфликта.