:: Чат и обновление без Js ::

Varg

Guest
:: Чат и обновление без Js ::

Есть такая проблема:
Нужно открыть устойчивое соеденение с браузером.
И с вечным циклом (до прерывания связи) смотреть о наличии новых сообщений (для чата) и как только оно поступило, отослать браузеру. Проверять дальше.

Алгоритм мне ясен, а вот исполнение не очень:

Две заминки:
1. Как сделать устойчивое соеденение, и что это такое.
2. Как это всё отправить браузеру, желательно без обновления, а с простой дописью новых фраз.
3. И что бы нагрузка на сервер была невеликой.

Я думаю эта тема будет полезной не только мне.

Если есть любые мысли по поводу того, как, что и зачем делать, пишите. Форум бесплатный :)
Пока что... :)
 

Рома

был тут
Re: :: Чат и обновление без Js ::

>1. Как сделать устойчивое соеденение, и что это такое.

Сделай невидимый фрейм, который перезагружается раз в н секунд, ну а на серваке скрипт, который смотрит наличие новых сообщений

>2. Как это всё отправить браузеру, желательно без обновления, а с простой дописью новых фраз.

Памому никак...
 

Varg

Guest
Re: Re: :: Чат и обновление без Js ::

Автор оригинала: Рома
>1. Как сделать устойчивое соеденение, и что это такое.
Сделай невидимый фрейм, который перезагружается раз в н секунд, ну а на серваке скрипт, который смотрит наличие новых сообщений
>2. Как это всё отправить браузеру, желательно без обновления, а с простой дописью новых фраз.
Памому никак...
1. Не... Так не пойдёт. Нужно без JS. Выслушивать каждую секунду щелчок релода это некруто.
2. Есть живые доказательства. :)
 

Ropez

Guest
Вешаеш на серваке демон который держит соединение с броузером и посилает ему сообщения.

Реальный пример:
http://php.spb.ru/chat/
Я счас сам пишу подобную вещь и сервак под линух.
 

Ropez

Guest
Можно еще скрипт который выдает сообщения не завершать, а пустить в бесконечный цикл и каждую секунду проверять наличие новых сообщений и виводить их. Но тогда для каждого юзера Апачь будет держать отдельный процесс что силно скажется на количестве свободной памяти... :rolleyes:
 

Varg

Guest
А есть доки по настройке демона с спб.ру ?
 

Ropez

Guest
Автор оригинала: Varg
А есть доки по настройке демона с спб.ру ?
Да, есть небольшие рекомендации. На том же сайте. Демон не собственный. Называется eggdrop. В нете моно много инфы по нему найти.
 

Varg

Guest
Автор оригинала: Ropez
Да, есть небольшие рекомендации. На том же сайте. Демон не собственный. Называется eggdrop. В нете моно много инфы по нему найти.
Ok, ясно, информация обрабатывается.

Послушай, а как ты себе под ник записал "Rodriguez" ? :)
Я тоже не прочь изменить статус Junior Member...
 

Ropez

Guest
Автор оригинала: Varg
Ok, ясно, информация обрабатывается.
Послушай, а как ты себе под ник записал "Rodriguez" ? :)
Я тоже не прочь изменить статус Junior Member...
Внизу НАСТРОЙКИ >> Редактировать Данные >> Индивидуальная надпись Участника ;)
 

ekap

Guest
Re: Re: :: Чат и обновление без Js ::

Автор оригинала: Рома
Сделай невидимый фрейм, который перезагружается раз в н секунд, ну а на серваке скрипт, который смотрит наличие новых сообщений
Можете мне неверитm но я какраз по этому принцыпу сделал неделю назад чат .... он сейчас немного недоделан но посмотреть его можно тут www.scorp.ti.ru/ekap/chat/index.php
если нужны исходники Jscripta сами посмотрите если нужен php (он тут достаточно сложный т.к. определяет сколько сообщений уже у пользователья итп. такчто их могу прислать пишите [email protected] или стучите ICQ:642332
 

ekap

Guest
А вобще если надо без перезагрузки то это делается так :

$id = 1;
Цикл от 1 до 10000000

fopen файл с сообщениями

Цикл от 1 до конца файла
формат файла примерно такой
Сообщение|Ник|ID сообщения|

циклом перебераеш все ID и если находится подходящий
например 1 то выводиш поля ник и сообщения
ID увеличиваеш на 1 итд....


короче если что-то непонятно стучи в асю (642332) я тебе точнее скажу (по мылу обяснять небуду)
 

Ropez

Guest
Автор оригинала: ekap
А вобще если надо без перезагрузки то это делается так :
$id = 1;
Цикл от 1 до 10000000
fopen файл с сообщениями
Цикл от 1 до конца файла
формат файла примерно такой
Сообщение|Ник|ID сообщения|
циклом перебераеш все ID и если находится подходящий
например 1 то выводиш поля ник и сообщения
ID увеличиваеш на 1 итд....
короче если что-то непонятно стучи в асю (642332) я тебе точнее скажу (по мылу обяснять небуду)
В таком случае каждый юзер занимает у сервака как минимум один процес... а ето чревато нехваткой памяти...
 

Ropez

Guest
Автор оригинала: Ropez
В таком случае каждый юзер занимает у сервака как минимум один процес... а ето чревато нехваткой памяти...
Вот чат без обновлений: default.lv

вернее ето тестовый клиент для реального чата:
default.lv
 

makRo

Guest
а

<meta http-equiv="Refresh" content="СекунД; URL=/myScript.php">

не покатит ?
:)

без JS вроде...

Количество "Секунд" можно настраивать для каждого индивидуально...
 

Ropez

Guest
Автор оригинала: makRo
а
<meta http-equiv="Refresh" content="СекунД; URL=/myScript.php">
не покатит ?
:)
без JS вроде...
Количество "Секунд" можно настраивать для каждого индивидуально...
Приходится каждый раз конектится к серверу, делать различные проверки, висылать все сообщения. В придачу отправленные сообщения не сразу появляются.
 

Varg

Guest
Автор оригинала: makRo
а
<meta http-equiv="Refresh" content="СекунД; URL=/myScript.php">
не покатит ?
:)
без JS вроде...
Количество "Секунд" можно настраивать для каждого индивидуально...
Не, не катит :). Вот предложение Ropez'a это интересно...
 

RomikChef

Guest
Бред сивой кобылы.

Автор оригинала: Ropez
Приходится каждый раз конектится к серверу, делать различные проверки, висылать все сообщения. В придачу отправленные сообщения не сразу появляются.
Все эти действия занимают в миллиарды раз меньше ресурсов, чем постоянное соединение.

Отправленные сообщения появляются мгновенно, поскольку окно чата есть таргет формы.
 

Ropez

Guest
Re: Бред сивой кобылы.

Автор оригинала: RomikChef
Все эти действия занимают в миллиарды раз меньше ресурсов, чем постоянное соединение.
Отправленные сообщения появляются мгновенно, поскольку окно чата есть таргет формы.
Вариант 1: Рефреш
Барузер конектися к серваку. Тот делает различние проверки связанные с аутентификацией, банами и.т.д. Далее он вибирает все сообщения адресованные юзеру. Посылается достаточно большой обьем ХТМЛа. Конект обрывается.
Предположим рефреш идет каждые 10 секунд. На серваке вертится 100 человек. Получается 10 запросов секунду.
Новые сообщения появляются через каждые 10 секунд.
Дла каждого запроса создается отдельный процесс который поедает память. На это уходит время. Вобщем ето все только для тех кто решил написать стандартный, кривой, тормознутый чат.

Вариант 2: Постоянный конект
Человек подконектился к серваку. Ни памяти, ни проц он не жрет. Сервер каждую секунду проверяет базу на наличие новых сообщений и если таковые имеются пишет их в сокет.
Человек моментально получает отправленные сообщения. Канал не забит. Память не сжирается. Проц отдыхает.

Теперь скажи где я не прав?
 

Varg

Guest
Re: Re: Бред сивой кобылы.

Автор оригинала: Ropez
Вариант 1: Рефреш
Барузер конектися к серваку. Тот делает различние проверки связанные с аутентификацией, банами и.т.д. Далее он вибирает все сообщения адресованные юзеру. Посылается достаточно большой обьем ХТМЛа. Конект обрывается.
Предположим рефреш идет каждые 10 секунд. На серваке вертится 100 человек. Получается 10 запросов секунду.
Новые сообщения появляются через каждые 10 секунд.
Дла каждого запроса создается отдельный процесс который поедает память. На это уходит время. Вобщем ето все только для тех кто решил написать стандартный, кривой, тормознутый чат.
Вариант 2: Постоянный конект
Человек подконектился к серваку. Ни памяти, ни проц он не жрет. Сервер каждую секунду проверяет базу на наличие новых сообщений и если таковые имеются пишет их в сокет.
Человек моментально получает отправленные сообщения. Канал не забит. Память не сжирается. Проц отдыхает.
Теперь скажи где я не прав?
Что-то я перестал понимать. Твой второй вариант с постоянным соеденением это через вечный цикл с флушем? Или нет?
 
Сверху