как сделать чат на php http push — позволяет отправлять произвольные сообщения посетителю по инициативе push сервера то есть push оповещения. Для доставки оповещений применяется comet технология. Для работы push оповещений нужен push service. push service, его ещё называют push сервер, поддерживает всё время открытое сетевое соединение с браузерами клиентов используя технологию websocket или long polling и по команде вашего web сервера может отправить push сообщение любому посетителю. Использование push server позволит значительно разгрузить ваши сервера и предоставит возможность использования HTTP server push уведомлений без усложнения вашей инфраструктуры. В этой примере разберём как создать чат с использованием комет сервера. Наш мини чат на php будет работать по технологии websocket. Для связи php с websocket сервером надо использовать php comet api. Пример как написать php chat Если рассматривать наиболее мини чат на php то нам понадобится всего один канал. Все участники подписываются на события из этого канала, а для отправки сообщения в скрипт чата для сайта просто посылаем сообщение в канал. realtime php: Принцип работы. - Все сообщения от всех пользователей отправляются в общий канал web_chat_pipe.
- Структура сообщения содержит в себе текст сообщения и имя отправившего это сообщение.
- Все пользователи принимающие участие в чате подписаны на канал чата.
Примечание: В примерах будет использована библиотека JQuery. Сначала разберём как работает простой скрипт мини чата. надо запомнить это то что в этом чате переписываются применяя только лишь комет сервер. Слабые стороны: - Нет возможности забанить посетителя
- Нет регистрации, это позволяет спамить без наказанно.
Плюсы: - очень сильно просто в разработке, на самом деле это 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".appendb>"+text+"<; добавляет напечатанное сообщение в нашу чат ленту, так чтоб потом было удобно перечитывать сообщения. А вот вызов 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; }; Тут первый аргумент это строка в которой первый символ # а за ним имя канала отчёт о доставки сообщения в который мы ждём. грубо говоря нет необходимости в обработке отчёта о доставке. Из него мы можем получить сколько человек получили наше сообщение. Оригинал long polling php
|