Я пробовал читать некоторые статьи, но я пока не совсем понимаю понятия.
Кто-то хотел бы сделать снимок, объяснив мне, что это за технологии:
Одна вещь, с которой я сталкивался каждый раз, – это сервер, который открывает соединение и передает данные клиенту. Каким образом соединение остается открытым и как клиент получает данные? (Как клиент использует данные, может быть, какой-то код может помочь?)
Теперь, какой из них я должен использовать для приложения реального времени. Я много слышал о websockets (с socket.io [библиотекой node.js]), но почему бы не PHP?
В приведенных ниже примерах клиент является браузером, а сервером является веб-сервер, на котором размещен веб-сайт.
Прежде чем вы сможете понять эти технологии, сначала вам нужно понять классический веб-трафик HTTP.
Сервер отправляет событие клиенту, когда имеется новая информация.
Теперь сервер и клиент могут отправлять друг другу сообщения, когда доступны новые данные (с обеих сторон).
Комета представляет собой набор методов, предшествующих HTML5, которые используют потоковые и длинные опросы для достижения приложений реального времени. Подробнее о википедии или этой статье.
Теперь, какой из них я должен использовать для приложения в реальном времени (которое мне нужно закодировать). Я много слышал о websockets (с socket.io [библиотекой node.js]), но почему бы не PHP?
Вы можете использовать PHP с WebSockets, посмотрите Ratchet .
Tieme приложил немало усилий в его отличный ответ, но я думаю, что суть вопроса OPs заключается в том, как эти технологии связаны с PHP, а не с тем, как работают каждая технология.
PHP является наиболее часто используемым языком в веб-разработке, помимо очевидной клиентской стороны html, css и javascript. Тем не менее, PHP имеет две основные проблемы, когда дело касается приложений реального времени:
1) PHP начал как очень простой CGI. PHP продвинулся очень далеко, так как это на ранней стадии, но это произошло небольшими шагами. У PHP уже было много миллионов пользователей к тому времени, когда оно стало внедряемой и гибкой библиотекой C, которой она является сегодня, большинство из которых зависят от ее более ранней модели исполнения, поэтому она еще не предприняла твердую попытку избежать cgi модель внутри. Даже интерфейс командной строки вызывает библиотеку PHP (libphp5.co на linux, php5ts.dll на окнах и т. Д.), Как будто он все еще обрабатывает cgi с запросом GET / POST. Он по-прежнему выполняет код, как будто он просто должен создать «страницу», а затем завершить жизненный цикл. В результате он очень мало поддерживает многопоточное или управляемое событиями программирование (в пользовательском пространстве PHP), что делает его в настоящее время нецелесообразным для многопользовательских приложений в режиме реального времени.
Обратите внимание, что PHP имеет расширения для предоставления циклов событий (таких как libevent) и потоков (например, pthreads) в пользовательском пространстве PHP, но очень и очень немногие из них используют их.
2) PHP все еще имеет серьезные проблемы с сборкой мусора. Хотя эти проблемы постоянно улучшались (вероятно, это самый важный шаг для завершения жизненного цикла, как описано выше), даже самые лучшие попытки создания длинных приложений PHP требуют перезапуска на регулярной основе. Это также делает его непрактичным для приложений реального времени.
PHP 7 станет отличным шагом для решения этих проблем, и он кажется очень перспективным как платформа для приложений реального времени.
Я попытался сделать заметку об этих и собрал и написал примеры с точки зрения java .
HTTP для разработчиков Java
Обратный Ajax – Старый стиль
Асинхронная обработка на стороне сервера
Обратный Ajax – Новый стиль
События, отправленные сервером
Поместите его здесь для любого разработчика Java, который изучает тот же предмет.