Имею тематический проект с элементами соц сети. Самое главное, как вы понимаете, это чат между людьми. Я долго смотрел в сторону dklab_realplexor, но сейчас что-то сомневаюсь в том, что оно мне подойдёт.
Итак, как я хочу сделать:
- При заходе на сайт пользователь подключается к серверу, желательно через сокеты и загружает все непрочитанные сообщения.
- При поступлении нового сообщения пользователь получает на соединение это сообщение, а так же сообщение заносится в базу (MySQL, хотя можно попробовать и MongoDB).
- Как только пользователь загрузил сообщение он в тот же сокет посылает статус "Принято", что бы не получилось состояние, когда пользователь отключился, но сервер ещё не узнал об этом.
Это план того, как я вижу это в работе. По факту же я даже не совсем представляю как это реализовать :)
Поясню, почему отказался от реалплексора. Во первых я понятия не имею, как мне отловить событие первого сообщения - или подключаться ко всем друзьям сразу, либо создавать общий канал, что повлечёт возможность прочитать первое сообщение каждого диалога. Во вторых - создавать канал на каждый диалог и следить за ним - не вариант, мне кажется, хотя возможно он умеет сам чистить пустые каналы, я могу ошибаться.
Из возможных реализаций рассматриваю или php модули, или node реализацию, но на ноде я слишком мало писал, так что сам через известный socket.io не напишу (по крайней мере я до сих пор не могу представить, как отправлять пакеты конкретному адресату и тем более нескольким (в случае нескольких окон)), так что на ноде желательно готовое и допиливаемое решение.