скрипт чата

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

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

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

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

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

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

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

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

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

Первое что надо заметить это в этом чате участники переписываются используя всего лишь комет сервер.

Недостатки:

  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".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;
};

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