Обновления в реальном времени для SaaS без стороннего realtime-сервиса
Обновлено
Seed отправляет каждое сохранённое изменение во все открытые вкладки группы через WebSocket своего API, поэтому заметка, сохранённая в одном окне, за секунду появляется в остальных, без перезагрузки. Всё работает на вашем сервере, и платить за realtime-сервис не нужно; фича, которую вы добавите, получает это, скопировав пример с заметками.
- Обычный WebSocket, у каждого изменения свой порядковый номер
- Проснувшаяся вкладка переподключается и забирает пропущенное
- Реальное время можно выключить: тогда приложение опрашивает сервер по таймеру и работает так же
Каждая запись сохраняется со следующим порядковым номером группы, и API отправляет её в открытые сокеты всех участников. Вкладка применяет изменение, только если его номер идёт сразу за последним, который у неё есть; при пропуске она запрашивает у сервера всё после своего курсора, так что потерянное сообщение стоит одного лишнего запроса и никогда — неверного списка.
Ноутбук, проснувшись, переподключается и забирает пропущенное. Если сокет выключен, приложение читает и пишет по HTTP и проверяет изменения каждые 30 секунд.

Обновляется ли Seed в реальном времени?
Да. Сохранённое изменение за секунду появляется во всех открытых вкладках группы, без перезагрузки.
Нужен ли Pusher, Ably или другой realtime-сервис?
Нет. WebSocket обслуживает собственный API Seed на вашем сервере.
Догоняет ли вкладка изменения, когда ноутбук просыпается?
Да. Она переподключается и забирает все изменения после последнего, которое у неё было.
Можно ли отключить обновления в реальном времени?
Да. Задайте SPA_REALTIME=false: тогда приложение проверяет изменения каждые 30 секунд и работает так же.