Теперь, когда все браузеры, которые мне нравятся, имеют почти полную поддержку Server Sent Events, я хотел попробовать реализовать его на сайте, который я откладывал, потому что я ненавижу опрос. Но у меня началось сомнение, что я надеялся, что смогу помочь.Как вызвать событие, отправленное сервером в HTML5 ... ИЛИ: Может ли PHP-скрипт быть в курсе, если был вызван другой скрипт?
Вот мой случай использования:
Пользователь переходит к форме, то, в зависимости от времени и конкурентоспособны, в данном случае класс регистрации. При прочих равных условиях у них есть список из примерно 30-40 классов, на которые они имеют право, и для того, чтобы свести к минимуму случаи, когда она вошла в систему, но сначала он ударил, но он не хотел ударить, но она уже выбрала другой класс "и т. д., я хочу сделать форму в режиме реального времени, так что, когда кто-то выбирает опцию, она идет прямо в db, и кто-либо другой, просматривающий форму, видит, что она заполняется. (Я буду заниматься стрессом, когда люди передумают позже).
Итак, в сценарии опроса мне приходилось иметь дело с вызовами AJAX, которые должны были проверить состояние 40 точек и обновить их и установить интервал, который потенциально мог бы создавать конфликты.
Но с сервером Sent Events, я могу иметь слушатель получить только пятно, которые нуждаются в обновлении, который кажется лучше, но вот где я застрять:
Есть ли риск слушателя получать перегружен ? Скажем, скрипт отправляет 15 сообщений, связанных друг с другом, об изменении состояния. Я вижу смутные упоминания о том, как пользовательские агенты должны обрабатывать поставленные в очередь задачи, но неясно, подходит ли это для установления соединения или обработки сообщений, отправленных сервером.
Это в основном просто перенос бремени опроса из браузера на сервер? Должен ли скрипт проверять БД каждую секунду на изменения? Есть ли способ, чтобы скрипт мог быть осведомлен или уведомлен о произошедшем изменении? Предположим, что запросы на места отправляются на
requests.php
через ajax и чтоupdates.php
отсылает события обратно в браузер. Есть ли стандартный и/или умный способ дляupdates
в режиме ожидания до тех пор, покаrequests
не совершил фиксацию?
Единственное решение, которое я могу придумать для requests.php
писать совершенные изменения в плоский файл (commits.xml
возможно) и updates.php
только опрашивает размер файла каждые полсекунды, тем самым сохраняя нагрузку до минимума.
Любые лучшие/более умные/более очевидные решения там?
«Теперь, когда все браузеры, которые мне нравятся, имеют почти полную поддержку событий, отправленных сервером» нелогичны, события на стороне сервера заканчиваются перед любым выходом, который может включать или не включать браузер –
@Dagon [Server Sent Events] (http://dev.w3.org/html5/eventsource/) и серверные события не совпадают. Чтобы быть более конкретным, [Событие, отправленное сервером] (http://en.wikipedia.org/wiki/Server-sent_events), является типом серверного события, которое переводится в постоянное соединение в браузере, что позволяет избежать необходимость в ajax-опросе. Это новое для HTML5 и все еще рабочий проект, но он был быстро принят всеми, кроме IE. – Anthony