Открыть Ответить

Чат в реальном времени

26.11.2010 16:23:17 26.11.2010 16:24:42

Привет )))

В общем, интересует такой вот вопрос меня... Есть такой сервис liveoperator.ru, в двух словах, это чат с посетителем сайта в реальном времени, то есть Оператор пишет любому, находящемуся на сайте пользователю, и у него открывается окно "Вам сообщение", без перезагрузки страницы, так же и посетитель может писать админу.

Как примерно реализовать такое на php и js? В частности, интересует вопрос, как можно при "отправке" сообщения кому-либо (здесь происходит запись в бд с параметром WHERE ip='$userip'), показать ему без перезагрузки страницы, что ему пришло сообщение? (Собственно само окно чата я примерно представляю как реализовать)

Вариант такой - делать запрос js-функцией ajax('index.php?module=......') через например каждые 10 сек, но мне кажется это не лучший способ.

SLAED CMS 2.6 Lite
PHP 4
Сервер в интернете
Goshan
Goshan
3.92

3.92

не сложно, вопрос в другом ...
сообщение отправлять только пользователям или всем кто на сайте ?

ZOMBiE
ZOMBiE
4.05

4.05

только тому пользователю, какому нужно))))

Это называется "Онлайн-консультант", вспомнил.

Goshan
Goshan
3.92

3.92

ra55551
ra55551
3.75

3.75

26.11.2010 18:35:37 27.11.2010 00:18:41

Написал я себе онлайн-консультативню, только один вопрос: Когда администратор отправляет сообщение (записывается в бд - insert into ... where alert='1'), нужно, чтобы пользователь тут же был уведомлен о новом сообщении, то есть нужно тогда, когда alert=1, вывести на экран юзера, например, div какой-нибудь. - как сделать это при перезагрузке страницы, я себе отчетливо представляю, но если без перезагрузки? может как-нибудь jquery подключить? =/

Goshan
Goshan
3.92

3.92

ну так найди скрипт js который выдает данные без перезагрузки страниц и все... делов то

panic
panic
3.38

3.38

27.11.2010 10:55:00 27.11.2010 12:00:48

Вводим в том месте где должно быть сообщение такой код:

echo "<div id=\"message\"></div>"<br /> ."<script src=\"prototype.js\" type=\"text/javascript\"></script>"<br /> ."<script type=\"text/javascript\" charset=\"windows-1251\">setInterval(function(){new Ajax.Updater('message', 'message.php')}, $time_pause);</script>";


По переменным:

echo "<div id=\"message\"></div>"

DIV куда выводим сообщение юзеру, является пустым и скрыт по умолчанию...

."<script src=\"prototype.js\" type=\"text/javascript\"></script>"

Подключаем скрипт prototype...

."<script type=\"text/javascript\" charset=\"windows-1251\">setInterval(function(){new Ajax.Updater('message', 'message.php')}, $time_pause);</script>";

Вводим нужные параметры запросов, где:

  1. charset=\"windows-1251\" - кодировка Вашего сайта
  2. setInterval - интервал опроса сервера в миллисекундах, задается переменной $time_pause...
  3. message - id нашего div тега...
  4. message.php - непосредственно скрипт который делает запрос в БД и обрабатывает данные о выводе сообщения(вместо скрипта можно вставить функцию из скрипта)...

[b]Скрипт message.php:[/b]
<br /> делаем запрос в бд<br /> IF (запрос в бд==выполнен){<br /> Header("Content-Type: text/html; charset=windows-1251");<br /> echo "<table><tr><td>Сообщение для пользователя</td></tr></table>";<br /> }<br />


[b]В итоге:[/b] при работе скрипта, пока юзер находится на странице, через определенный интервал времени ($time_pause) делается опрос нужного скрипта, и если в скрипте появляется переменная которую можно вывести на экран, то её содержимое выводится в теге DIV без перезагрузки страницы...
[i]Все тоже самое можно сделать на ДЖквери или любом другом Аякс скрипте, только логика и код будет другой, я просто дал примера...[/i]
GRAFLEKX
GRAFLEKX
3.92

3.92

А на родном ажаксе слаеда такое нельзя реализовать ?

ra55551
ra55551
3.75

3.75

А на родном ажаксе слаеда такое нельзя реализовать ?


Да фиг его знает, скорее всего нет, нужно смотреть возможности родного аякса в Slaed.
Я просто выкидываю все js из системы и все переделываю на полноценный jQuery, так как в Slaed сильно урезанные версии.

GRAFLEKX
GRAFLEKX
3.92

3.92

28.11.2010 20:20:42 28.11.2010 20:30:37

спасибо. но есть одно но... это получается, что через каждые 5-10-100 ... секунд будут производиться запросы для КАЖДОГО находящегося на сайте пользователя... хм, имхо нагрузка возрастет на сервер =/

Goshan
Goshan
3.92

3.92

Всего: 39 на 4 страницах по 10 на каждой странице

1 2 3 4
Открыть Ответить

Хотите опробовать SLAED CMS в действии?

Идеи и предложения
Обратная связь