реал-тайм php

push service — позволяет отправлять сообщения посетителю по инициативе комет сервера то есть push сообщения.

Для доставки уведомлений применяется комет технология. Для работы comet оповещений нужен push server. comet сервис, его ещё называют push сервис, поддерживает непрерывно открытое сетевое соединение с браузерами клиентов используя технологию websocket или long polling и по команде вашего web сервера может отправить push сообщение любому клиенту.

Использование comet сервиса позволит значительно разгрузить ваши сервера и предоставит возможность использования http push сообщений без усложнения вашей инфраструктуры.

В данной примере рассмотрим как создать простой чат php с использованием комет сервера. Наш чат ajax php будет работать по технологии websocket. Для связи php с websocket сервером надо использовать php comet api.

Пример как сделать простой скрипт онлайн чата

Если расбирать наиболее php comet чат то нам понадобится всего один канал. Все участники подписываются на события из этого канала, а для добавления сообщения в скрипт чата для сайта просто посылаем событие в канал.

long polling php чат: Принцип работы.

  1. Все сообщения от всех пользователей отправляются в общий канал web_chat_pipe.
  2. Структура сообщения содержит в себе текст сообщения и имя отправившего это сообщение.
  3. Все принимающие участие в чате подписаны на канал чата.
Примечание: В примерах будет использована библиотека JQuery.

Сначала разберём как работает простой php comet чат.

надо заметить это в данном чате общаются используя только комет сервер. Это имеет ряд недостатков делающий из чата скорее упрощёную учебную модель.

Слабые стороны:

  1. Нет возможности забанить человека
  2. Нет регистрации, это позволяет любому представится чужим именем.

Сильные стороны:

  1. особенно просто в разработке, грубо говоря это javascript чат php не используется
  2. очень сильно лёгок поцес установки чата на сайт

И теперь по частям рассмотрим как создать чат на php:

Функция web_send_msg отправляет сообщение в чат.

function web_send_msg
{
// Получение значений из html элементов ввода.
var text = $"#WebChatTextID".val; // Получаем текст сообщения
var name = $"#WebChatNameID".val; // Получаем имя пользователя

// Очистка поля с текстом сообщения
$"#WebChatTextID".val"";

// Добавление отправленного сообщения в свой список сообщений.
$"#WebChatFormForm".appendp<";

// Отправка сообщения в канал чата.
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;
};

Тут первый аргумент это строка в ней первый символ # а за ним имя канала отчёт о доставки сообщения в который мы ждём. Так то нет нужды в обработке отчёта о доставке. Из него мы сможем узнать сколько посетителей получили отправленое сообщение и не возникало ли каких либо ошибок. Чиатайте подробнее Использованая литература php онлайн чат