Помогите с ajax

EE
На сайте с 15.12.2012
Offline
4
597

Доброго времени суток.

1.

Есть задача, сделать переписку между пользователями как в контакте.

Т.е. чат с функцией "печатает".

Подскажите плиз как делается.

Видел у друга "онлайн консультант" свой. Он говорит что повесил ajax запрос на Jabber.

Но в моем проекте жаббер сервака не будет. Т.е. буду стучать постоянно а БД.

Посмотрел на его сайт. Там висит ajax запрос в течении одной минуты, потом обрывается и стартует новый.

Как я понимаю там стоит вечный цикл с паузой 60 000 милисекунд, который постоянно вешает запрос.

А вот как повесить такой запрос не знаю. Обычно ajax отработал, вернул, закончился. (Думаю это связанно как-то с синхоностью/аснихронностью)

В общем подскажите как повесить такой зарос. Чтоб он работал 60 сек.

Ну и подскажите в ту ли я сторону копаю?

2.

Вместе с этим родственная задача.

Надо сделать на сайте у пользователей статус "Онлайн/Оффлайн". Как это делается что-то не пойму. Даже если и повешу запрос, что им щупать?

Lord Maverik
На сайте с 15.04.2003
Offline
471
#1

По поводу 60 секунд:

http://yandex.ru/yandsearch?text=js%20timer&lr=2

RedMall.Ru (https://redmall.ru) - Товары из Китая (Таобао, Tmall) с проверкой качества, скидка для форумчан 7% Партнерская программа 2 уровня: 5% + 5%. Подробнее. (https://redmall.ru/about/partner/)
EE
На сайте с 15.12.2012
Offline
4
#2

setTimeout('getMessage();', 1000);

вот что по этим ссылкам

setTimeout - это периодичность запуска, это и так знаю

не по теме ответ

нужно именно висящий ajax запрос!

siv1987
На сайте с 02.04.2009
Offline
427
#3

Если нужно постоянное соединение капайте в сторону вебсокетах.

Exist_entity:
нужно именно висящий ajax запрос!

Ну так, не разрывайте соединение на сервере, и будет "висячий" запрос.

D
На сайте с 14.01.2007
Offline
153
#4

делайте сразу нормально:

1. копайте в сторону websockets

2. заносите в базу, когда юзверь последний раз делал запрос к сайту. если < 10(например) минут, то онлайн.

EE
На сайте с 15.12.2012
Offline
4
#5
Dinozavr:
делайте сразу нормально:
1. копайте в сторону websockets
2. заносите в базу, когда юзверь последний раз делал запрос к сайту. если < 10(например) минут, то онлайн.

1. Судя по всему это то что надо.

2. Врядли, чел может до посинения сидеть без активности.

По сокетам понятно, буду копать.

По онлайну что-то читал по поводу активности сесии, ведь если так подумать, то сессионная переменная хранится на стороне сервера. Вот только как её достать и соотнести с id того кто мне нужен?

Т.е. свою текущюю я конечно знаю. А нужна чужая. Причем так как она будет - "fgdfgdfgwaha12ff2", как мне понять что она именно определённого пользователя?

D
На сайте с 14.01.2007
Offline
153
#6

Exist_entity, Сессия может жить месяцами. не всё же это время показывать человека онлайн?

Все(ну или почти все) статусы онлайн/офлайн исходят из времени последнего действия на сайте, которое заносится в БД

dkameleon
На сайте с 09.12.2005
Offline
386
#7
Exist_entity:
Посмотрел на его сайт. Там висит ajax запрос в течении одной минуты, потом обрывается и стартует новый.

это вебсокеты.

Дизайн интерьера (http://balabukha.com/)
EE
На сайте с 15.12.2012
Offline
4
#8
Dinozavr:
Exist_entity, Сессия может жить месяцами. не всё же это время показывать человека онлайн?
Все(ну или почти все) статусы онлайн/офлайн исходят из времени последнего действия на сайте, которое заносится в БД

Там разговор между консультантами и клиентами.

Консультант сидит за компом, открыл сайт, день лазит в одноклассниках пока кто-то не купит его услугу. Активности нет. Можно конечно повесить ему аякс, каждые 10 мин чтоб стучал, что чел на месте. Но корректное ли это решение?

D
На сайте с 14.01.2007
Offline
153
#9

Exist_entity, ну так вам надо исходить из ТЗ. в вашем случае я бы просто дал консультанту две кнопки: онлайн/офлайн и всё

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