Теперь, когда все браузеры, которые мне нравятся, имеют почти полную поддержку событий, отправленных сервером, я хотел попробовать реализовать их на сайте, который я откладывал, потому что я ненавижу опросы. Но у меня изначально возникли сомнения, что я надеялся получить помощь.
Вот мой пример использования:
Пользователь переходит к форме, что-то временное и конкурентное, в данном случае регистрация класса. При прочих равных у них есть список из 30-40 классов, на которые они имеют право, и для того, чтобы свести к минимуму случаи «она вошла сначала, но сначала он нажал« сохранить », но он не хотел нажимать« сохранить », но она уже выбрала другой класс "и т. д., я хочу сделать форму в реальном времени, чтобы, когда кто-то выбирает параметр, он переходил прямо в базу данных, и любой другой, просматривающий форму, видел, что она заполняется. (Я справлюсь со стрессом людей, которые передумают позже).
Итак, в сценарии опроса мне приходилось иметь дело с вызовами AJAX, которые должны были проверить состояние 40 точек и обновить их, а также установить интервал, который потенциально может создавать коллизии.
Но с помощью Server Sent Events я могу заставить слушателя получать только те места, которые нужно обновить, что кажется лучше, но вот где я застрял:
Есть ли риск перегрузки слушателя? Допустим, скрипт отправляет 15 сообщений подряд об изменении статуса. Я вижу расплывчатые упоминания о том, как пользовательские агенты должны обрабатывать поставленные в очередь задачи, но неясно, предназначено ли это для установления соединения или обработки отправленных сервером сообщений
Является ли это просто передачей бремени опроса от браузера к серверу? Должен ли скрипт проверять БД каждую секунду на предмет изменений? Есть ли способ, чтобы скрипт был уведомлен или уведомлен, когда произошли изменения? Давайте предположим, что запросы мест отправляются на requests.php
через ajax, а updates.php
отправляет события обратно в браузер. Существует ли стандартный и / или умный способ простоя updates
до тех пор, пока requests
не совершит коммит?
Единственное решение, которое я могу придумать, - requests.php
записать зафиксированные изменения в плоский файл (возможно, commits.xml
), а updates.php
просто опрашивает размер файла каждые полсекунды, тем самым сохраняя рабочую нагрузку на уровне минимум.
Есть ли лучшие / более умные / более очевидные решения?