Чат на PHP c использованием COMET сервера и WebSocket

Для создания чата с бекендом на php лучше всего использовать comet сервер, например этот https://comet-server.com/ , он использует SQL запросы из бекенда для обмена данными с comet сервером.

Тут схема работы выглядит так, человек авторизуется на сайте (в бекенде) и тут же логинится на comet сервере командой:

В бекенде

Тут

$this->_user->getId() — ID пользователя в бекенде, $this->_hash — генерим уникальный хеш для каждого пользователя чтобы инициализировать при помощи него подключение на клиентской стороне.

На фронтенде

Подключаем js файлы comet сервера и:

Так мы подписались на получение личных сообщений, при поступлении личного сообщения $(«#WebChatFormForm»).append(«<p class=… выводим его.

Тут мы инициализируем связь с комет сервером при помощи websocket . В данном примере COMET используется на своем сервере, его можно использовать и как облачный SaaS сервис с другими настройками… Подробнее о подключении в документации.

node: — тут IP:ПОРТ ws сервера.

user_key: тут хеш который мы отправляли в бекенде

user_id: тут id юзера в бекенде.

В результате подключились.. и можем принимать сообщения. Отправить этому пользователю сообщение может другой такой-же авторизованный пользователь при помощи команды:

Тут у нас :

$poluchatel_id — ID получателя

event — событие

$msg — сообщение

Отправляем это аяксом и готово, по заявлению разработчика этот сервер может держать очень большое количество клиентов… Я сам делаю сейчас проект один и использую этот подход, пока всем доволен, удобно и функционально… В документации все расписано очень  подробно и с примерами https://comet-server.com/wiki/doku.php/ru .

 

 

Комментировать