информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Spanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Пример 26.09.03 05:27  Число просмотров: 1450
Автор: Overlord [AHT] Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Я хотел бы сделать чат по типу http://clayser.com.ru/cgi-bin/chat/chat.pl (только не по дизайну, а по идее :) ). Вот интересно, как они там это реализовали? Фрейм сообщений не обновляется, они просто дописываются в конец страницы...
<programming>
[Perl] Чат без перезагрузки фреймов 26.09.03 02:19  
Автор: Overlord [AHT] Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Народ, подскажите пожалуйста, как создать нормальный чат на Perl'е без перезагрузки фреймов, чтобы новые сообщения просто дописывались в окно сообщений, либо хотя бы чтобы сообщения обновлялись только при появлении новых? Проблем с хостером быть не должно, время использования скриптов не ограничено... Если кто знает - посоветуйте готовые скрипты такого рода, чтобы их можно было изучить, или просто посоветуйте, каким методом воспользоваться?
inside 26.09.03 02:54  
Автор: Eugene Статус: Незарегистрированный пользователь
<"чистая" ссылка>
перл к фреймам имеет довольно косвенное отношение.

следует различать клиентские и серверные технологии.

в любом случае - обращение к серверу должно быть, перегрузка чего-либо - тоже.

рекомендую обратиться к помощи литературы.
inside 26.09.03 03:14  
Автор: Overlord [AHT] Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> перл к фреймам имеет довольно косвенное отношение.
> следует различать клиентские и серверные технологии.
Я довольно неплохо разбираюсь в Perl'е и не путаю технологии. Вопрос был такой: как написать на Perl'е что-то типа daemon'а, который загружается один раз, а в дальнейшем просто отслеживает появление новых сообщений и пересылает их посетителю по мере поступления?

> в любом случае - обращение к серверу должно быть,
Это сомнений не вызывает :)

> перегрузка чего-либо - тоже.
А вот это вызывает...

> рекомендую обратиться к помощи литературы.
Я и задал вопрос, кто какую литературу посоветует...
Литературу не посоветую, разве что стандарт HTTP перечитай... 26.09.03 04:20  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
> > перл к фреймам имеет довольно косвенное отношение.
> > следует различать клиентские и серверные технологии.
> Я довольно неплохо разбираюсь в Perl'е и не путаю
> технологии. Вопрос был такой: как написать на Perl'е что-то
> типа daemon'а, который загружается один раз, а в дальнейшем
> просто отслеживает появление новых сообщений и пересылает
> их посетителю по мере поступления?
Демона не демона, но держать постоянно процесс в памяти, а не загружать его каждый раз новый, вполне реально (смотрим в сторону, например, FastCGI). Только это тебе не поможет. Смотри ниже.

> > перегрузка чего-либо - тоже.
> А вот это вызывает...
Не может браузер постоянно держать открытое соединение через HTTP, он для этого не предназначен. HTTP - Pull-протокол. Следовательно, придется тебе на клиентской стороне время от времени дергать браузер, чтобы он шел на сервер за очередной порцией. А дальше эту порцию надо куда-то залить (правильно, в браузер, потому что именно он отправил HTTP-запрос). А теперь угадай, в какое место залитую порцию браузер может положить. Только срендерить HTML (или смотря что там пришло) в какой-нить фрейм. Ну и все, приехали.
Можно, конечно, нарисовать на клиентской стороне ActiveX или Java-апплет, но... ну в общем все всё поняли.
Пример 26.09.03 05:27  
Автор: Overlord [AHT] Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Я хотел бы сделать чат по типу http://clayser.com.ru/cgi-bin/chat/chat.pl (только не по дизайну, а по идее :) ). Вот интересно, как они там это реализовали? Фрейм сообщений не обновляется, они просто дописываются в конец страницы...
Есть такая возможность 26.09.03 09:22  
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
<"чистая" ссылка>
Один мой знакомый наваял такое на JSP. Уверен что на перле это тоже возможно. Суть в том что ты не закрываешь сокет, а понемногу отдаешь данные в поток. То есть выглядит это так:

У клиента.
1. Фрейм в котором постоянно открыт сокет.
2. фрейм в котором ты пишешь реплику и отсылаешь на сервак.
У сервера.
1. ЦГИха которая получает реплику и сует её в базюку (файл)
2. ЦГИха которая незакрывая_сокети соответсвенно не выходя регулярно (или по каким-то семафорам) опрашивает базюку и получив новые реплики кидает их в stdout.

Проблемсы:
На браузере IE4.x замечалось обрывание этого соединения при каком-то таймауте. Лечилось регулярной посылкой <!-- PING --> . На экране ничего не отображалось, а браузер не дох.
Все, больше проблемсов не было.
[Perl] Re: Есть такая возможность 26.09.03 14:15  
Автор: Overlord [AHT] Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Если можно, расскажи подробнее про этот вариант. Так вроде все понятно, но с чего за это взяться? Идеальным примером был бы небольшой фрагмент кода на perl'е.
[Perl] Перла не помню 26.09.03 14:44  
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
<"чистая" ссылка>
...вот тебе на шелле код. Захочешь - спортируешь.
> Если можно, расскажи подробнее про этот вариант. Так вроде
> все понятно, но с чего за это взяться? Идеальным примером
> был бы небольшой фрагмент кода на perl'е.

#!/bin/sh
#

echo "Content-type:text/html"
echo ; echo
echo "<html><body><h3>Welcome to super-duper megachat</h3><hr>"

while :
do
  if [ -f logout.dat ] ;then exit;fi
  if [ -f message.txt ] ;then
    echo "<br>"
    cat message.txt
  fi
  sleep 1
done

---

Создашь файлик logout.dat в каталоге со скриптом - он прекратит работу, создашь файлик mesage.txt - он его содержимое выдаст чаттеру. И все без рефрешей :)
отвалишься по таймауту. не сервер, так браузер отбросит. 29.09.03 01:23  
Автор: Eugene Статус: Незарегистрированный пользователь
<"чистая" ссылка>
главное - не ясно как к этому подходу отнесется когда-нибудь какой-нибудь IE9.0 и тп.
Чтоб не отвалиться можно периодически пинги слать 29.09.03 08:28  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> главное - не ясно как к этому подходу отнесется
> когда-нибудь какой-нибудь IE9.0 и тп.
Примерно в следующем виде:

<!-- PING -->

Типа данные продолжают поступать, нет причин отваливаться.

Вот только одно не радует. Ну уж очень будет расти сама html-ка. Надо обязательно предусмотреть полный релоад через некоторый промежуток времени (минут 20 хотя бы: 3 релоада в час не сильно напрягут по трафику ИМХО, хотя можно и реже).
Хм, да, извиняюсь, про такой ход забыл. 26.09.03 13:02  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
Но этот вариант не дает делать какие-либо настройки внешнего вида чата "на лету". Либо опять же перегружать фрейм.
[Perl] Есть еще вот такая возможность.. 26.09.03 12:58  
Автор: trent Статус: Незарегистрированный пользователь
<"чистая" ссылка>
делается фрейм нулевой геометрии, он каждый раз обновляется, в нем строится JS, который вставляет содержимое в видимый фрейм. Этот вариант гибче, т.к позволяет изменять порядок вывода сообщений(
например: снизу-вверх сверху-вниз).
[Perl] Эээ... 26.09.03 14:46  
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
<"чистая" ссылка>
> делается фрейм нулевой геометрии, он каждый раз
> обновляется,
Стоп. Я так понял что наша цель это чатбезобновлений.
[Perl] imho 26.09.03 18:56  
Автор: hamstr Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Стоп. Я так понял что наша цель это чатбезобновлений.
незакрывать соеденение конечно можно. получится что фрейм грузится бесконечно.
только что скажет хостер на такое количество одновременно открытых коннектов к серверу.
лично мне больше по душе вариант с javascript который предлагает trent.
как-то он изящней выглядит. да и в примере сделано именно так....
жаль только не работает в мозиле :)))))
а на [Perl] можно написать irc клиента? 26.09.03 02:50  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
Странный вопрос - конечно, можно. Но тут товарищ просит серверные скрипты, насколько я понял. 26.09.03 04:12  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
Отредактировано 26.09.03 04:22  Количество правок: 1
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach