php, чат, ajax

imbalance
На сайте с 03.03.2007
Offline
240
1211

Уважаемые коллеги.

Есть задача сделать чат между пользователями. С чатом то все понятно, но челвоеку нужно выводить статус о том, что человек сейчас пишет сообщение (как вконтакте).

Подскажите пути реализации. Пока ничего в голову не приходит, как бы удобно все это сделать то...

IL
На сайте с 20.04.2007
Offline
435
#1

Если с чатом всё понятно, то в чём сложности со статусом?

imbalance:
Пока ничего в голову не приходит, как бы удобно все это сделать то...

Если человек поставил курсор в поле ввода текста (и/или начал печатать) - изменяем статус "печатает", и ставим JS-таймер на 10-15-20-40 секунд (по таймеру изменить статус на "не печатает). При каждом нажатии onkeypress(?) таймер обновляем.

Отправлять информацию об изменении статуса Ajax-ом.. Хранить на сервере где-нибудь в памяти (для "просто" сайта вполне может подойти memory таблица MySQL)

Как вариант - можно посмотреть в сторону Comet-сервера... http://dklab.ru/lib/dklab_realplexor/

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
imbalance
На сайте с 03.03.2007
Offline
240
#2

спасибо

вопрос нагрузки лишь

php.developer
На сайте с 22.11.2010
Offline
94
#3

На сервере обязательно php нужен? Просто такие штуки достаточно легко делаются на node js с использованием сокетов.

imbalance
На сайте с 03.03.2007
Offline
240
#4
php.developer:
На сервере обязательно php нужен? Просто такие штуки достаточно легко делаются на node js с использованием сокетов.

PHP да, без него никуда, чат идет как одна из функциональных частей сайта.

Вот к примеру, каким образом это реализовано в vk, ajax запросы все время отсылают?

php.developer
На сайте с 22.11.2010
Offline
94
#5
imbalance:
PHP да, без него никуда, чат идет как одна из функциональных частей сайта.
Вот к примеру, каким образом это реализовано в vk, ajax запросы все время отсылают?

Сокеты. Аякс жирно слишком получается.

D
На сайте с 14.01.2007
Offline
153
#6
imbalance:
PHP да, без него никуда, чат идет как одна из функциональных частей сайта.

а что мешает иметь сайт на php, а чат на ноде?

php.developer
На сайте с 22.11.2010
Offline
94
#7

Для чатов/лс на сайте уже давно определил кошерную связку nodejs+websockets+mongodb. Работает архибыстро, надежно, но даже в случае проблем с чатом, не ляжет сам сайт. Приложение на node отлично "демонизируется" upstart-ом, работу которого, спокойно отслеживает monit, так что даже в случае критической ошибки, приложение перезапускается в течении пары секунд. Посмотрите, немного разобраться всего лишь.

kxk
На сайте с 30.01.2005
Offline
990
kxk
#8

php.developer, Всё тоже самое только mysql 5.6 :) Работает отлично

Ваш DEVOPS
php.developer
На сайте с 22.11.2010
Offline
94
#9
kxk:
php.developer, Всё тоже самое только mysql 5.6 :) Работает отлично

Сначала тоже делал с mysql, но mongo проще сама по себе, плюс простое масштабирование подкупило :). А с mysql работало вменяемо по скорости только на MyISAM, не знаю, может локальная проблема, конечно, была.

---------- Добавлено 11.07.2014 в 16:32 ----------

А по теме ТС, на одном проекте, делалось, что сообщение выводилось собеседнику в момент написания :) Не знаю зачем, но в ТЗ было именно так. Связка таже, как это делать средствами php и его "имитации сокетов", я понятия не имею, но думаю, длительные сексуальные отношения php с вашим мозгом гарантированы, php же.:)

LC
На сайте с 06.07.2014
Offline
3
#10

чтобы уменьшить нагрузку и трафик смотри в сторону php push

здесь могла быть ваша реклама... :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий