Как интегрировать чат COMET в приложение PHP

Думаю интегрировать чат внутрь уже написанного и работающего php приложения. Поскольку мне еще нужно выбрать реализацию чата, я покажу вам некоторые соображения:

  1. PHP не подходит для приложения Comet. Сервер кометы php для управления чатом не будет хорошо масштабироваться, поэтому это не мой первый выбор.
  2. Node.js + Socket I/O в конечном итоге может стать хорошим вариантом для движка чата.
  3. AMQP (RabbitMQ?) может быть еще одним, возможно, хорошим решением, не исключительным для node.js, поскольку они могут довольно хорошо интегрироваться.

Основная проблема заключается в следующем: как избежать дублирования кода и бизнес-логики? Есть некоторые аспекты, которые я хотел бы отметить:

  • Приложение управляет пользователями в стиле RBAC. Пользователи должны иметь возможность общаться с другими пользователями в зависимости от их роли (и некоторых других бизнес-логик). Было бы сложно (и плохая практика imo) дублировать эту логику.
  • Если я использую два разных серверных процесса (как я думаю) для обмена мгновенными сообщениями и приложения, как я могу управлять сеансом http?

Вкратце: IM будет тесно связан с бизнес-логикой, поэтому мне действительно нужно избегать дублирования кода/логики, но в то же время мне не нужен механизм чата PHP.

Заранее спасибо.


person ArtoAle    schedule 01.11.2011    source источник
comment
Не могли бы вы немного пояснить, что именно вы спрашиваете?   -  person Polynomial    schedule 02.11.2011
comment
Извините, я попытался удалить некоторые вещи. В любом случае, предположим, что мое приложение — facebook, и оно работает на PHP. Как я могу добавить (comet) поддержку чата, не переписывая бизнес-логику? (кто я? я вошел в систему, Джонни мой друг - и я могу общаться с ним? и так далее...)   -  person ArtoAle    schedule 02.11.2011


Ответы (1)


Я использую что-то в своем php-приложении под названием Pusher

Вот ссылка на Pusher

person Naftali aka Neal    schedule 01.11.2011
comment
На самом деле, это кажется возможным решением, но я предпочитаю собственное программное обеспечение :) в основном по коммерческим причинам. - person ArtoAle; 02.11.2011
comment
@ArtoAle Вы изучали события, отправленные сервером, или веб-сокеты? - person Naftali aka Neal; 02.11.2011
comment
Извините, я плохо понимаю :) Моя проблема не в том, как реализовать обратный ajax (сокет ввода-вывода предоставляет отличные обертки веб-сокетов, которые возвращаются в другое решение обратного ajax, которое работает очень хорошо). Меня беспокоит следующее: если у меня есть приложение, управляемое PHP, с большим количеством логики управления пользователями, как я могу избежать переписывания этой логики для управления системой чата?) - person ArtoAle; 02.11.2011