php comet push сервис — позволяет отправлять произвольные сообщения в браузер посетителя по инициативе push сервера то есть push сообщения. Для доставки уведомлений нужна push технология. Для работы комет сообщений нужен push сервис. push server, его ещё называют push server, поддерживает непрерывно открытое соединение с браузерами клиентов используя технологию websocket или long polling и по команде вашего web сервера может отправить push уведомление любому посетителю. Использование push сервиса позволит значительно разгрузить ваши сервера и обеспечит возможность использования http push оповещений без усложнения вашей инфраструктуры. В этой примере разберём как написать скрипт онлайн чата с использованием комет сервера. Наш php chat будет работать по технологии websocket. Для связи php с websocket сервером надо использовать php comet api. Пример как разработать простой скрипт чата на php Если расбирать наиболее простой скрипт онлайн чата то нам понадобится всего один канал. Все участники подписываются на сообщения из этого канала, а для добавления события в чат для сайта на php просто отправляем сообщение в канал. скрипт мини чата: Принцип работы. - Все сообщения от всех пользователей отправляются в общий канал web_chat_pipe.
- Структура сообщения содержит в себе текст сообщения и имя отправившего это сообщение.
- Все участвующие в чате подписаны на канал чата. И полученные из него сообщения отображаются в ленте общения.
Примечание: В примерах будет использована библиотека JQuery. Сначала рассмотрим как работает простой чат ajax php. Первое что надо отметить это в чате общаются применяя только лишь комет сервер. Это имеет ряд недостатков делающий из чата скорее упрощёную учебную модель. Слабые стороны: - Нельзя забанить посетителя
- Нет регистрации, это позволяет спамить.
Сильные стороны: - просто в реализации, грубо говоря это javascript чат php не используется
- очень сильно прост поцес установки чата на сайт
А сейчас по кусочкам рассмотрим как разработать websocket php чат: Функция web_send_msg отправляет сообщение в чат. function web_send_msg { // Получение значений из html элементов ввода. var text = $"#WebChatTextID".val; // Получаем текст сообщения var name = $"#WebChatNameID".val; // Получаем имя пользователя // Очистка поля с текстом сообщения $"#WebChatTextID".val""; // Добавление отправленного сообщения в свой список сообщений. $"#WebChatFormForm".append">p<>b<"+name+": >; // Отправка сообщения в канал чата. CometServer.web_pipe_send"web_chat_pipe", {"text":text, "name":name}; } Вот Тут можно заметить что строка: $"#WebChatFormForm".append"<p>>b>"+name+": <; добавляет напечатанное сообщение в нашу чат ленту, так чтоб потом было удобно перечитывать сообщения. А вот вызов CometServer.web_pipe_send"web_chat_pipe", {"text":text, "name":name}; производит непосредственно отправку нашего сообщения всем остальным участникам онлайн чата. Первый аргумент это имя канала в который мы отправим сообщение. Второй параметр это само сообщение, содержащие имя отправителя и текст сообщения. Примечание: имя канала начинается с префикса "web_". Во все каналы имя которых начинается с префикса "web_" сообщение может отправить любой кто знает имя канала прямо из JavaScript. Этот кусок скрипта определяет колбек обработки на получение отчёта о доставке сообщения. CometServer.subscription"_answer_to_web_chat_pipe", functionp { $"#answer_div".html"Сообщение доставлено "+p.data.number_messages+" получателям. "+p.data.error; }; первый аргумент это строка в ней первый символ # и за ним имя канала отчёт о доставки сообщения в который мы ждём. Так то нет нужды в обработке отчёта о доставке. Из него мы сможем узнать сколько получили наше отправленое сообщение. Оригинал как сделать чат в html
|