Ssylka

Как правильно реализовать блокировку документа при совместной работе?

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

Использование поллинга, хоть и самое очевидное решение, но с множеством недостатков. Проблемы так же возникают с долгоживущими соединениями, поскольку PHP сервер обрывает их через 30 секунд, что делает невозможным применение long polling и Server-Sent Events.

Альтернативным решением стали события на блокировку и разблокировку формы, отправляемые на сервер при входе и выходе пользователя. Однако эта стратегия также столкнулась с трудностями при обработке закрытия окна браузера, поскольку событие onbeforeunload не срабатывало при запросе о сохранении изменений. После замены onbeforeunload на unload, возникла проблема с браузером Edge, где событие перестало срабатывать.

Финальным решением стал поллинг с отправкой событий о блокировке формы через заданный интервал. Блокировка снимается при выходе пользователя или по истечении таймаута, если запросы перестают поступать. Важно отметить, что при переходе на другую страницу внутри приложения интервал так же сбрасывается.


Новое на сайте

7756Эпоха пиксельной магии: 10 мультсериалов 90-х, покоривших сердца миллионов 7755Нужно ли спешить со Скрамом: какова основа успешного управления проектами? 7754Смогут ли три крошечных тигренка спасти свой вид от вымирания? 7753Почему Oracle JDBC так медленно работает и как это исправить? 7752Как справиться с разрастанием Makefile и монолитом в Go? 7751Какие настольные игры помогут изучить точные науки в 2025? 7750Как сплотить команду и развить организацию? 7749Холодная война, горячая кровь: загадка убийства Джорджа полка в Салониках 7748Как AI-инструменты экономят время и повышают качество работы? 7747Энергетические секреты: какие устройства безопасно оставить в розетке 7746Италия блокирует китайского AI гиганта DeepSeek из-за опасений о конфиденциальности данных 7745Какие альтернативы Swiper для карусели в 2025 году? 7744Какие роботы уже меняют нашу жизнь и чего ожидать в будущем? 7743Может ли «пупок» Юты быть метеоритом или вздутием соли?