Наука и образование

ajax чат php

comet server — позволяет отправлять произвольные сообщения в браузер клиента по инициативе comet сервера то есть push уведомления.

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

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

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

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

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

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

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

Сначала рассмотрим как работает простой чат для сайта на php.

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

Недостатки:

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

Достоинства:

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

сейчас по кусочкам рассмотрим как разработать чат ajax 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_chat_pipe начинается с префикса "web_". Во все каналы имя которых начинается с префикса "web_" сообщение может отправить любой кто знает имя канала прямо из JavaScript.

Следующий кусок скрипта назначает callback обработки на получение отчёта о доставке сообщения.

CometServer.subscription"_answer_to_web_chat_pipe", functionp
{
$"#answer_div".html"Сообщение доставлено "+p.data.number_messages+" получателям. "+p.data.error;
};

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