У меня есть база данных «документов», когда пользователь запрашивает просмотр документа, он отправляет исходное сообщение AJAX на сервер (Flask), чтобы обновить состояние, например. «заблокирован» с использованием текущего времени, затем каждые 10 секунд он снова обновляет состояние блокировки с текущим временем.
Когда другой пользователь пытается получить доступ к документу, если время блокировки находится в пределах 10 секунд, это означает, что кто-товсе еще смотрит на него, и запрос отклоняется, иначе время истекло, и документ свободен для доступа.
Все это делается с помощью постоянных AJAX-вызовов к бэкэнду. Я думал о возможном использовании веб-сокетов для создания состояния истинной логической блокировки вместо этого, пока пользователь просматривает документ, при отключении состояние блокировки возвращается к значению False.
Есть ли плюсы и минусы для любого из них,Я просто думаю, что если у меня по 100 пользователей, каждый из которых выполняет AJAX-запрос каждые 10 секунд, это превысит максимальное число одновременных запросов моих серверов, и он попытается загрузить другой экземпляр, потому что считает, что он получает высокую нагрузку?
псевдо-примертекущего метода:
while viewing document:
for every 10 seconds:
update document.lock to current-time
Идея Websocket:
on connect:
document.lock = True
on disconnect:
document.lock = False