как сделать чат на сайте push service — позволяет отправлять свои сообщения в браузер клиента по инициативе комет сервера то есть push сообщения. Для доставки сообщений применяется комет технология. Для работы комет оповещений нужен comet сервис. comet сервер, его ещё называют comet сервер, поддерживает постоянно открытое сетевое соединение с браузерами клиентов используя технологию websocket или long polling и по команде вашего web сервера может отправить push уведомление любому клиенту. Применение http push поможет значительно разгрузить ваши сервера и обеспечит возможность использования push server оповещений без усложнения вашей инфраструктуры. В этой простом примере выясним как создать простой скрипт онлайн чата с применением комет сервера. Наш чат на php будет работать по технологии websocket. Для связи php с websocket сервером надо использовать php comet api. Пример как разработать realtime php Если расбирать наиболее простой чат то нам понадобится всего один канал. Все участники подписываются на события из этого канала, а для добавления события в php comet чат просто отправляем сообщение в канал. скрипт чата: Принцип работы. - Все сообщения от всех пользователей отправляются в общий канал web_chat_pipe.
- Структура сообщения содержит в себе текст сообщения и имя отправившего это сообщение.
- Все посетители принимающие участие в чате подписаны на канал чата.
Примечание: В примерах будет использована библиотека JQuery. Сначала разберём как работает простой скрипт онлайн чата. надо заметить это в нашем чате переписываются используя только лишь комет сервер. Недостатки: - Нельзя забанить человека
- Нет регистрации, это позволяет спамить без наказанно.
Плюсы: - очень просто в разработке, на самом деле это javascript чат
- лёгок поцес установки чата на сайт
ниже по кусочкам рассмотрим как разработать мини чат на php: Функция web_send_msg отправляет сообщение в чат. function web_send_msg { // Получение значений из html элементов ввода. var text = $"#WebChatTextID".val; // Получаем текст сообщения var name = $"#WebChatNameID".val; // Получаем имя пользователя // Очистка поля с текстом сообщения $"#WebChatTextID".val""; // Добавление отправленного сообщения в свой список сообщений. $"#WebChatFormForm".appendb<"+text+">; // Отправка сообщения в канал чата. 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_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
|