Использование comet сервера для реализации простого чата
сегодня в 09:58
Comet — любая модель работы веб-приложения, при которой постоянное HTTP-соединение позволяет веб-серверу отправлять (push) данные браузеру без дополнительного запроса со стороны браузера.
Взаимодействие с комет сервером построено следующим образом.
Существует не мало подходов для реализации, но актуальным на данный момент является WebSockets, в использовании остальных подходов таких как Polling, Long polling, «бесконечный» iframe и Flash сокеты уже почти необходимости так как вебсокеты уже поддерживаются всем современными браузерами.
Будет хорошо если кто то ещё поделится ссылками на похожие проекты.
Есть ещё сводная таблица реализаций комет серверов, но она датирована аж 2009 годом
Разберём пример построения чата. В качестве комет сервера будем использовать comet-server.ru
Чат будет работать следующим образом:
На схеме изображено место комет сервера в процессе работы.
![На схеме изображено место комет сервера в процессе работы.](https://habrastorage.org/files/fab/427/3de/fab4273dec734b7f902d4e61cf6b84d5.png)
Взаимодействие с комет сервером построено следующим образом.
- Браузер открывает страницу сайта
- После загрузки страницы JavaScript устанавливает постоянное соединение с comet сервером.
- Пока открыта страница ваш сервер может отправить произвольное сообщение клиенту. Для этого он обращается с помощью Api к комет серверу и передаёт ему сообщение.
- Комет сервер используя открытое соединение с браузером доставляет полученное сообщение в браузер.
- JavaScript Api полученное от сервера сообщение предаёт в ваш collback
Существует не мало подходов для реализации, но актуальным на данный момент является WebSockets, в использовании остальных подходов таких как Polling, Long polling, «бесконечный» iframe и Flash сокеты уже почти необходимости так как вебсокеты уже поддерживаются всем современными браузерами.
Будет хорошо если кто то ещё поделится ссылками на похожие проекты.
Название | Лицензия | API |
Centrifuge | MIT | Python, Ruby, Java, PHP |
Nginx Push Stream Module | GPL | REST API |
dklab_realplexor | GPL | PHP |
comet-server.ru | Как сервис, С установкой на свои сервера |
Delphi, C, C++, Эйфель, Java, Лисп, Perl, PHP, Python, Ruby, Smalltalk, Node.js, Bash, Компонентный Паскаль и Tcl (Все языки для которых есть MySQL клиент) |
fanout.io | Как сервис, С установкой на свои сервера |
Python, Ruby, PHP, Node, Go, Django |
pusher.com | Как сервис | REST API и библиотеки для Ruby, PHP, .NET, Node.js, Python |
hydna.com | Как сервис | C++, Erlang, Go (Push only), Java, JavaScript, Julia (Push only), Lua (Push only), .NET, Node.js, Objective-C, PHP (Push only), Python (Push only), Ruby (Push only) |
tambur.io | Как сервис | Ruby, Python, PHP, Java, Erlang |
Разберём пример построения чата. В качестве комет сервера будем использовать comet-server.ru
![1643cdf848544901913bd1c3a9af9b3a.png](https://habrastorage.org/files/164/3cd/f84/1643cdf848544901913bd1c3a9af9b3a.png)
Чат будет работать следующим образом:
- Пользователь заходит на страницу и сразу подписывается с помощью JavaScript Api на канал для получения сообщений чата.
- Для того что бы отправить сообщение пользователь отправляет текст сообщения через ajax на php сервер.
- PHP сервер полученное сообщение обрабатывает, по желанию сохраняет к себе в БД и делает с ним что угодно.
- Затем php сервер соединяется с комет сервером и передаёт ему запрос на отправку сообщения в канал.
- Комет сервер полученное от php сервера сообщение рассылает всем кто подписан на канал.
Код для получения сообщений из чата
Для связи с комет сервером используется CometQL. CometQL - это api для работы с комет сервером по протоколу MySQL.
Код для отправки сообщения из php
Демо работы чата здесь.
Тут ещё один пример чата, но в нём php сервер вообще не используется, всю работу выполняет comet сервер. А здесь пример чата с авторизацией на комет сервере.
-
↑
—
↓ -
1,1k
-
Добавить в избранное 32
@Levhav
![6f5cd5d57a998ffccfa6e44918567d05.png](http://habrastorage.org/getpro/habr/company/6f5/cd5/d57/6f5cd5d57a998ffccfa6e44918567d05.png)
SaaS comet сервис
Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.