Q:

"Собеседник печатает сообщение" Online Chat (Web)

Уважаемые #ХэшКодеры =) вот я столкнулся с ситуацией что сейчас у меня 21:46, и я не знаю чем себя занять, мне интересно как с помощью PHP / JavaScript / MySQL ну и т.п. реализовать функцию "Собеседник печатает сообщение".
На эту тему у меня только рассуждения делать ежесекундный запрос в базу данных, а у пользователя который печатает обновлять время в базе по функции
onKeyPress="press();"

Хотелось бы ваши предложения и советы по реализации данного функционала. Думаю будет интересно по дисскусировать с вами на эту тему.
Для примера добавил скриншот, я понимаю что "Mail.Ru Agent" это не WEB но просто что-бы вы поняли о чем я.

A:

Ежесекундный запрос в базу очень быстро загрузит сервер. Чем больше пользователей, тем быстрее такое приложение упадёт. Для реализации подобного используют long polling: соединение с сервером держится открытым, при этом сервер может в любой момент посылать клиенту сообщения (например, о том, что другой пользователь печатает ему сообщение). Клиент же посылает данные на сервер отдельными AJAX-запросами. Такое можно реализовать либо попросту не закрывая соединение на сервере и дописывая туда сообщения по мере их поступления (старый добрый AJAX), либо с помощью WebSocket (HTML5 style).
Ссылки по теме: раз, два, три, четыре.

A:

Про PHP решения @fori1ton уже хорошо сказал, я же предлагаю NodeJS + SocketIO. Думаю, нагуглить информацию не составит труда. Что интересно - основному приложению (которое может быть и на PHP, и на чем-то еще) знать о NodeJS совершенно не обязательно. Как раз для случая "и я не знаю чем себя занять".

