Проблема с чатом

Статус
Закрыто для дальнейших ответов.

Mirage

Active Member
Регистрация
05.05.2005
Сообщения
37
Прошу помощи. Подскажите плиз как сделать, что бы при нажатии на кнопку вызвать в чат одного из участников на стороне вызванного открылось окно с чатом?
Например: я нажимаю кнопку вызвать в чат и у удаленного пользователя открывается окно с этим же чатом…как открыть удаленно окно у пользователя..???
:angry:
 

Creator

Administrator
Команда форума
Регистрация
03.03.2005
Сообщения
1 745
Так как мне не приходилось писать чаты (не требовалось и не очень, то я их люблю), но все же систему я представляю.

Я предполагаю, что чат у тебя работает на БД MySQL или любой другой SQL-БД.
У тебя, наверное, есть поле в одной из таблиц, отвечающее за приватные сообщения. Ну так вот, помимо обычных запросом из БД для получения обычных сообщений, ты выполняешь еще 1 запрос для получение инфы о приватных. Я думаю, это ты сделаешь.

И если оказывается, что прив. сообщение есть, то через JS просто открываешь новое окно и так далее.
 

DnAp

self::setDebugMode(true);
Регистрация
30.04.2005
Сообщения
490
Поподробней поясни у тебя пользователь находится постоянно подключенным и обновляет инфу то я не вижу никаких проблемм а вот если тебе надо после полной загрузки страницы открыть новое окно до есть способ дописать в эту страницу скрипт
http://www.internet-technologies.ru/articl...rticle_181.html
Вот эта статейка упомянает как это сделать...
 

Mirage

Active Member
Регистрация
05.05.2005
Сообщения
37
дело не в том при или после загрузки, пользователь сидит на сайте, другой пользователь хочет вызвать его в приватный чат, он жмёт кнопку открыть чат и у обоих пользователей появляется окно с чатом, вопрос как сделать так что бы при нажатии у удаленного от меня пользователся открылось окно с нужной мне страницей, как открыть это окно... :worthy:
 

DnAp

self::setDebugMode(true);
Регистрация
30.04.2005
Сообщения
490
Для начала надо сделать сам чат между двумя пользователями
чтоб каждый пользователь мог запустить ручками чат со своей стороны открытием файла chat.php например...
Если у тебя это есть то остается написать
Код:
<?
// Эти две строки нужны чтоб вечный цикл не
обрывался
set_time_limit(0);
ignore_user_abort(true);
?>
тут пишем свою страничку
<?
flush();
while (1 == 1) { // Вечный цикл
sleep(2);

if(caht_new())// тут вычисли открыли с челом чат или нет
{
   echo "window.open('chat.php', 'Chat', 'titlebar=no,scrollbars=no,directories=no,location=no,status=no,toolbar=no,he
ight=240,width=500,menubar=no,resizable=yes');";
}
flush();
}
?>
Я не вжу в этом никакой пробеммы! заюзал только ту статью и скопил js из проекта который под рукой :umnik: ...
 

Creator

Administrator
Команда форума
Регистрация
03.03.2005
Сообщения
1 745
В этом тебе поможет JS, т.е. создаешь ф-ию, типа открытия popup окна (хотя может блокироваться это открытие браузером) и передаешь ей какой нить "id", который говорит, что отправлено личное сообщение и необходимо открыть новое окно...

P.S. Но это в том случае, если юзер слабо настроил браузер, т.е. не блокирует произвольно всплывающие окна... Скорее всего, тебе придется продумать более универсальное решение... может просто выделить сверху поле, где будут отображать юзеры, которые написали тебе в приват?
 

Mirage

Active Member
Регистрация
05.05.2005
Сообщения
37
DnAp сказал(а):
Для начала надо сделать сам чат между двумя пользователями
чтоб каждый пользователь мог запустить ручками чат со своей стороны открытием файла chat.php например...
Если у тебя это есть то остается написать
Код:
<?
// Эти две строки нужны чтоб вечный цикл не
обрывался
set_time_limit(0);
ignore_user_abort(true);
?>
тут пишем свою страничку
<?
flush();
while (1 == 1) { // Вечный цикл
sleep(2);

if(caht_new())// тут вычисли открыли с челом чат или нет
{
   echo "window.open('chat.php', 'Chat', 'titlebar=no,scrollbars=no,directories=no,location=no,status=no,toolbar=no,he
ight=240,width=500,menubar=no,resizable=yes');";
}
flush();
}
?>
Я не вжу в этом никакой пробеммы! заюзал только ту статью и скопил js из проекта который под рукой :umnik: ...
[post="640"][/post]​
это всё конечно здорово, да вот только одна незадача...допустим мне пофиг что там в онке, у меня задача в том чтобы окно автоматически открывалась по клику на конпе у удаленного юзера...не у меня и не в ручную, а автоматически и у другого пользователя :angry:
 

DnAp

self::setDebugMode(true);
Регистрация
30.04.2005
Сообщения
490
Mirage сказал(а):
....
это всё конечно здорово, да вот только одна незадача...допустим мне пофиг что там в онке, у меня задача в том чтобы окно автоматически открывалась по клику на конпе у удаленного юзера...не у меня и не в ручную, а автоматически и у другого пользователя :angry:
[post="645"][/post]​
Не злись лучше спокойно расскажи что тебе не понравилось?
Размести этот код у "у другого пользователя" и сделай так чтоб когда ты у себя нажмеш на кнопку "у другого пользователя" функция caht_new() вернула true...
Это я бы те написал но ухожу...
 

Tsatur

Well-Known Member
Регистрация
15.05.2005
Сообщения
96
DnAp прав... хороший вариант (навреное и единственный)... напрямую с юзером ты не поработаешь (можно, но сложно и ненужно), а только через сервер и открыть окошко можно только так, как предложил DnAp (конечно, можно написать вирус, который всем будет открывать окошки по вызову из чата :))
 

Mirage

Active Member
Регистрация
05.05.2005
Сообщения
37
у меня тут утро наступило и пришла дурная мысль, а если где-нить в углу сайта сделать такой незаметно обновляющийся кусочек, в котором и будут все запросы, как такая мысль, только назрел другой вопрос, как обновлять только кусочек там нет фреймов :idontno:

ну да вариант годится, основываясь на ID участника можно постоянно обновлять кусок странички со скриптом, который и будет управлять командами окна и не только, но вопрос тот же как обновлять только кусочек она конечно можно использовать таблицы или таблицы разделения, всё же не фреймы и работать может быть будет как надо...
что вы на это скажете?

хотя можно и не выпендриваться с таблицами, можно тупо вбабахать туда флеш, ещё веселее будет как-нить анимировать для виду, но флеш честно говоря я не очень хочу делать хотя я думаю версии 4-5 ролик не будет качать плагин...
 

Mirage

Active Member
Регистрация
05.05.2005
Сообщения
37
основываясь на логике DnAp, проще всего было сделать небольшой флешь ролик в который я и воткнул ссылку на скрипт, он обновляется каждые 10 секунд, все данные скрипт получает из БД, номер юзера и действие...очень просто и удобно спасибо DnAp
 
Статус
Закрыто для дальнейших ответов.
Верх Низ