Всем спасибо за ответы. Прочитал про node.js и socket.io. Заинтересовало. Скачал, установил, поигрался - понравилось. Думаю для моей задачи в самый раз.
Если говорить ближе к реализации, то сделаю вот так:
- id - первичный ключ пользователя из бд
- socket.id - id клиента, который выдает node.js
1. При подключении клиента к серверу, буду проверять его сессию и забирать его id из таблицы. Id и socket.id буду запоминать в массиве вида:
clients[id] = socket.id
2. Создам обработчик, аля "onClientSendMessage", где буду проверять кому отправляется сообщение.
3. Если человек, которому принадлежит отправленное сообщение, в данные момент подключен к серверу node.js, то заберу его socket.id из массива clients по ключу "id", и соответственно отправлю ему сообщение.
io.sockets.socket(socket.id).emit('newMessage', message_data);
4. Если человек не подключен к серверу, то просто сохраняю сообщение в базе.
5. Если клиент разорвал соединение, то удалю его из массива clients.
Вроде так... Всем спасибо.