Я попытался прочитать некоторые статьи, но я еще не очень разбираюсь в понятиях.
Кто-нибудь хотел бы попытаться объяснить мне, что это за технологии:
- Длинный опрос
- Отправленные сервером события
- WebSockets
- комета
Одна вещь, с которой я сталкивался каждый раз: сервер держит соединение открытым и передает данные клиенту. Как соединение остается открытым и как клиент получает отправленные данные? (Как клиент использует данные, может быть, какой-то код может помочь?)
Теперь, какой из них я должен использовать для приложения в реальном времени. Я много слышал о websockets (с socket.io [библиотека node.js]), но почему не PHP?
php
websocket
comet
long-polling
server-sent-events
user1437328
источник
источник
Ответы:
В приведенных ниже примерах клиент является браузером, а сервер - веб-сервером, на котором размещается веб-сайт.
Прежде чем вы сможете понять эти технологии, вы должны сначала понять классический веб-трафик HTTP.
Обычный HTTP:
Аякс Поллинг:
Ajax Long-Polling:
Сервер отправил события HTML5 (SSE) / EventSource:
Сервер отправляет событие клиенту, когда появляется новая информация.
HTML5 Websockets:
Сервер и клиент теперь могут отправлять друг другу сообщения, когда доступны новые данные (с любой стороны).
Comet:
Comet - это набор методов, предшествующих HTML5, которые используют потоковую передачу и длинный опрос для создания приложений в реальном времени. Читайте больше на википедии или этой статье.
Вы можете использовать PHP с WebSockets, посмотрите Ratchet .
источник
Tieme приложил немало усилий, чтобы найти отличный ответ, но я думаю, что суть вопроса OP заключается в том, как эти технологии связаны с PHP, а не как каждая технология работает.
PHP является наиболее используемым языком в веб-разработке, помимо очевидной клиентской части html, css и javascript. Тем не менее, PHP имеет 2 основных проблемы, когда речь идет о приложениях реального времени:
1) PHP начинался как очень простой CGI. PHP продвинулся очень далеко с ранней стадии, но это происходило небольшими шагами. PHP уже имел много миллионов пользователей к тому времени, когда он стал встраиваемой и гибкой библиотекой C, которой он является сегодня, большинство из которых зависело от своей более ранней модели выполнения, поэтому он еще не сделал твердой попытки избежать модель cgi внутри. Даже интерфейс командной строки вызывает библиотеку PHP (libphp5.so в Linux, php5ts.dll в Windows и т. Д.), Как если бы она все еще была CGI, обрабатывающим запрос GET / POST. Он по-прежнему выполняет код, как будто ему просто нужно создать «страницу», а затем завершить свой жизненный цикл. В результате он очень мало поддерживает многопоточное или событийное программирование (в PHP-пространстве пользователя), что делает его непрактичным в настоящее время для многопользовательских приложений реального времени.
Обратите внимание, что PHP имеет расширения для предоставления циклов событий (например, libevent) и потоков (например, pthreads) в пользовательском пространстве PHP, но очень, очень немногие приложения используют их.
2) PHP по-прежнему имеет значительные проблемы со сборкой мусора. Хотя эти проблемы постоянно улучшаются (вероятно, это лучший шаг к завершению жизненного цикла, как описано выше), даже самые лучшие попытки создания долгосрочных приложений PHP требуют перезапуска на регулярной основе. Это также делает его непрактичным для приложений реального времени.
PHP 7 также станет отличным шагом для решения этих проблем и выглядит очень многообещающе как платформа для приложений реального времени.
источник
Я попытался сделать заметки об этом и собрал и написал примеры с точки зрения Java .
HTTP для разработчиков Java
Реверс Аякс - Старый стиль
Асинхронная обработка на стороне сервера
Реверс Аякс - Новый стиль
Сервер отправил события
Выложите это здесь для любого разработчика Java, который изучает ту же тему.
источник
Вы можете легко использовать Node.JS в своем веб-приложении только для общения в реальном времени. Node.JS действительно мощный, когда речь идет о WebSockets. Поэтому «Уведомления PHP через Node.js» были бы отличной концепцией.
Посмотрите этот пример: Создание приложения для чата в реальном времени с PHP и Node.js
источник