Каталог статей
Категории статей
Мои статьи [4]
Статьи написаные мною специально для публикования в просторах Интернета...
Личное [1]
Моя личная жизнь... Доступ ограничен!


Форма входа
Логин:
Пароль:


Поиск по статьям


Друзья сайта



Главная страница » Каталог статей » Мои статьи
Статья об технологии Webchat'ов на движке IRC
Статья об технологии Webchat'ов на движке IRC

Ниже представлена цитата с форума канала #volyn в сети KRAPKA, посему, текст временно не имеет структуру статьи....

SysR
Цитата
Само по собі технології ІРЦ відрізняються від загально принятих ВЕБчатів.
Програмна реалізація клієнта ІРЦ можлива лише на Джаві і CGI скриптах. А ВЕБ чати писані на ПХП -- ІМХО.


Нет, ты не прав :-) Так называемая тобой технология IRC - это всеголишь протокол, т.е. общепринятое правило "как описать" сообщение, т.е. как "сказать" серверу что Вася пупкин в канале "Волынь" сказал "здоровеньки були!". Ну конечно к этому нужно добавить что чаты работают по средству клиент-сервер и что в IRC на уровне протокола предусмотрено очень много наворочек :-) А вообще реализовать клиент (программа на стороне пользователя, которая позволит ему общатся в чате) можно на любом языке, лишь бы тот позволял подключится к серверу (поддерживал sockets если хотите или любую другую технологию подключения в сети) и умел пользоватся этим самым протоколом.

Пару слов о том, как в теории работает IRC.

Есть сервер, который получает сообщение от всех клиентов (чатеров) и разылает их между ними. Это cделано иммено так, т.к. TCP (основной протокол по которому работает многое в интернете) устроин так, что только 2 компютера могут быть связаны между собой. И так, у нас много чатеров подключеных к серверу. Им нужно как-то между собой общатся, этот "язык" общения описан в IRC протоколе. Т.к. есть "соглашение" (протокол) языка который доступен для всех (поищите в гугле IRC RFC), то может существовать безконечное количество разновидных программ, которые будут им владеть. По сему есть много IRC server-ов (UnrealIRCD, UltimateIRCD, etc) и много IRC clients (mIRC, X-Chat, BitchX, CGI::IRC, EIRC, PJIRC...). Все они в конечном итоге общаются между собой одинакого, разница между ними лиш в том, как написан сам IRC клиент и соответственно как он получает от конечного пользователя (человека) ввод и как показывает ему вывод. Теоритически, можно написать IRC клиент (программа, которая умеет общатся с IRC сервером, т.е. то, что позволяет человеку "сидеть в чате") который будет получать ввод от пользователя не на прямую с клавиатуры и мышку подключеныму к компютору на котором этот ирц клиент запущен, а скажем голосом человека, который будет передаватся по средством интернет радио на другой компютор, который будет этот голос разпознавать и передавать как заархивированый файл с паролем через SSL на третий компютер, который через FTP будет заливать этот файл на четвертый компютер, который уже будет разкрывать этот файл, "понимать" его, сможет "перевести" в нем написаное на "язык" (протокол) IRC и пошлет на этом языке обычному IRC server-у, который не знает ни голоса, ни FTP, ни SSL ... Вернуть ответ с чата клиенту можно тоже хитромудрым способом, тут у каждого своя фантазия ;-) Какая бы длинная цепочка ни была, не важно что было по середине и на каком языке программирования оно написано, то что важно, что на конце клиент и сервер "говорили" (общались) на понятном им языке IRC, по сему весь этот процесс будет называтся IRC чат и ни что другое...

Для ясности мысли нарисуем маленький рисунок того, как это все работает:


------------------                                            ------------------
|                 |                                          |                  |
|   ЧАТЕР №1      | -------------------------                |    ЧАТЕР № n     |
|                 |                         |                |                  |
------------------                          |                --------------------
                                            |                          |          
                                   ------------------                  |
                                   |                 |                 |
                                   |  IRC СЕРВЕР     |------------------
                                   |                 |
                                   ------------------
                                             |
------------------                           |
|                 |                          |
|   ЧАТЕР №2      |---------------------------
|                 |
------------------

Каждый чатер (клиент) подключен только к серверу, когда любой чатер чтото говорит в чате, он это шлет серверу, который это ретранслирует всем остальным чатерам, так что все видят, что это было сказано... Еще раз - всем наплевать на то, как работает сама программа через которую чатер со всеми общается и вообще какой у него компютер, т.к. то что все видет это всеголишь то, что передал по сети чатер, а не то, что это "создало" (буть то это mIRC, CGI::IRC или EIRC).

Но раз разговор у нас пошел о видах IRC клиентов, то давайте размотрим типы клиентов которые популярны на сегоднешний день и которые мы (http://chat.volyn.net) вам предоставляем:

Тип номер один: Это программа выполняющияся на стороне самого чатера (это ваш (да и мой) любимый mIRC, X-Chat, BitchX и т.п.). К этому все привыкли и ни чего нового я тут не сказал.

Код

     Чатер                                                             IRC Server
------------------                                                 ---------------------
|                 |           язык IRC (протокол)                  |                   |
|    mIRC         | <--------------------------------------------> |    UnrealIRCD     |
|   (irc client)  |                                                | (irc server)      |
------------------                                                 --------------------

Это пожалуй самый просто и типичный вид общения в любом чате (даже ICQ работает таким образом). Мы предлагаем скачать mIRC с нашего сайта уже настроеного для нашего чата или же скачать с официального сайта http://www.mirc.co.uk/get.html и настроив его зайти на сервер irc://irc2.volyn.net/volyn (/server irc2.volyn.net, /join #volyn, сервер = IRC2.VOLYN.NET, канал #volyn).

Более же новое и мения понятное это веб-интерфейс (или веб-клиент). Что же это такое? Это такая же самая программа как и mIRC с которой просто общается клиент (чатер) по средству Web. Т.е. программа которая знает протокол IRC стоит где-то на хостинге у кого-то (там где и стоят все сайты и форумы ...), она подключается к IRC серверу и общается с ним. Чатер же в свою очередь просто задает этой программе input (ввод) и получает с неё output (вывод) по средству Web (т.е. в браузере, Internet explorer, Firefox, whatever), а не "на прямую" как в случаи с mIRC. Вот такие веб-интерфейсы написать на HTML нельзя, т.к. HTML является всеголишь языком разметки (язык в котором есть текст и его разметка (по середине листа, большимы буквами и подчеркнутым мы например напишем заголовок нашего письма, так вот его текст останется не изменимым, но перед этим на языке HTML мы укажем что мы хотим этот текст разместить по середине, большим шрифтом и чтобы он был подчеркнутый). Это ВСЕ для чего был задуман HTML и по большому счету он сам по себе больше ни чего и не дает, а дают его разширения. Вообщем, к чему это я? на HTML написать чат не возможно. Просто язык на котором ваш браузер общается с программой, которая стоит на хостинге, включает в себя HTML который вы видете в браузере, т.е. все output-ы этого веб-интерфейса написаны в HTML, т.к. это подходящий язык для показания на экране текста (в чате общаются текстом...), который еще и должен знать каждый браузер...

Т.е. если попробывать нарисовать эту "технологию" то выходит чтото такое (прошу обратить внимание, что все что тут нарисовано, это подключения одного чатера к серверу, а не нескольких как было в прошлом рисунке):

Код

     Чатер №1               Хостинг                          IRC Server
-----------------         ----------------                ---------------------
|                 |  web  |                |    IRC      |                      |
|     Internet    | <---> |    CGI::IRC    |  <------->  |    UnrealIRCD        |
|     Explorer    |       |(web interface) |             |    (irc server)      |
|(web browser)    |       |                |             |                      |
-----------------         ----------------                --------------------

Чатер номер 1 говорит с CGI::IRC на языке веба (HTTP + HTML), CGI::IRC-же с точки зрения IRC Server-а является его клиентом и они между собой говорят на языке IRC (собственно ни чего другого IRC Server не знает и не должен знать). Т.е. реально IRC client это CGI::IRC, он просто получает ввод не на прямую, а через еще один компютер (комп. чатера в доме) и его он получает посредству Web.

Этот самый CGI::IRC написан на более продвинутом языке программирования, на Perl-е (он тоже изначально задумывался как обработчик текста, но не важно). Другие подходящие языки могут быть: PHP, C/C++, CF, J2EE (java) и вообще любой язык программирования или скриптинга который позволяет общатся с удаленным компютором (т.е. поддерживает сокеты если кому так проще, просто это не совсем правельно, т.к. можно общатся в сети и без сокетов...).

Это так называемая "Web Версія" доступна с лева на нашем сайте. Используется не CGI::IRC клиент, а чтото ему подобное под называнием RendezVous написаный Romka (мой старый IRC знакомый кстати).

Третий вид IRC клиентов тут тоже упомянутый являются Java Applet-ы. Вам может показатся что это совмесчение первого и второга вида IRC клиентов, но это не так! Хотя и Java Applet-ы "скачиваются" с веб сервера (хостинга) и написаны они на языке Java, технология их работы в сети ни как не связана со вторым типом (с веб-интерфейсами). Java Applet - это самостоятельная программа, которая запускается на стороне клиента (чатера). Она напрямую связывается с IRC server-ом и общается с ним по IRC protocol-у, по сему она и работает быстрее, чем веб-интерфейс (нету среднего звина хостинга).

Если это нарисовать, то это будет выглядить так:

Код

     Чатер                                                             IRC Server
-----------------                                                  -------------------
|                 |           язык IRC (протокол)                  |                   |
|   Java Applet   | <--------------------------------------------> |    UnrealIRCD     |
|                 |                                                |   (irc server)    |
-----------------                                                  -------------------

Все что связывает этот джава (или ява) аплет с хостингом это то, что сам аплет лежит на нем и браузер его скачивает как только видет в HTML-ке которую ему выдал веб-сервер ссылку на этот аплет. После загрузки ява аплета (eirc например) на компютер чатера хостинг ни как не участвует в разговоре чатера в чате ... И вообще - можно запускать ява аплеты и локально с компютора НЕ ИСПОЛЬЗУЯ совсем веб браузер, т.е. без Internet Explorer-а можно запустить EIRC и зайти с ним в чат, по сему этот "третий" вид ирц клиентов трудно назвать отдельной разновидностью...

И этот вид доступен у нас на сайте, так-же находится с левой стороны под меню и называется "Java Версія". Тут используется EIRC (Java applet), который долговато грузится (почти как mIRC наверное), но зато быстро работает.

P.S. Статья © Igor Berkovich, Israel. Размещение статьи только со ссылкой на его законного автора и ссылкой на сайт http://irc.volyn.net. Статья была написана как ответ Voyager-у и SysR-у на форуме http://www.volodymyr.com.ua/.

Рисунки в статье рисовались при 800х600, в PREVIEW они смотрелись хорошо (долго пробелы доставлял пока подобрал!), а после поста оказалось что места по ширене мало ;-( Кароче смотреть в 1024х768.

Voyager

Цитата
Да не йде там там 5 метрів в годину... В бізаррі люди сидять з такими убитими модемами і просто ніякими лініями... Прогрес іде, веб інтерфейс рулить...

Если ты прочитаешь статью выше, то ты поймешь:
A. мы предоставляем уже все возможные виды подключения к чату (ну кроме подключения через WAP и т.п.)
B. трафика всегда будет больше жрать веб-чаты (буть то через веб-интерфейс чаты на IRC или нет), т.к. там еще и HTTP + HTML кроме самого собвстенно текста который передается... Refresh всякие чаты вообще при каждом рефреше во первых шлют хтмл-ку с начала каждый раз, а во вторых повторяют сам текст чата. В IRC такого нету.

Цитата
Може б і ви збацали якусь красиву конхветку для прієзжих?

Уже есть, глянь "Web Версія" с лева под меню на сайте http://chat.volyn.net

Цитата
А ВЕБ чати писані на ПХП -- ІМХО

Ты наверное говоришь об веб-чатов не основаных на IRC. О них выше я не сказал ни слова. Веб чаты не основаные на IRC работают как правело намного проще.

В качестве сервера выступает веб-сервер стоящий на хостинге (Apache, IIS, Small HTTP Server ;-)). К нему все подключаются через веб бразуер (тот же Internet Explorer), т.е. не нужно ни какого дополнительного софта ни хозяину чата ни чатерам. На хостинге ставится простенький скрипт (как правело, есть и исключения), которые все сказаное в чате от всех чатеров записуют в базу данных и всем чатерам последние X реплик шлют.. Дальше есть 2 вида посылки:
1. Refresh
2. Streaming.

Первое просто - каждые X секунд браузер перезапрашуют страничку чата, а скрипт стоящий там выдает обновленные реплики (X последних реплик на данный момент).

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

Первый случай жрет жутко много трафика и медленно работает. Мы таким способом вообще не работает. Второй же способ реализован в веб-интерфейсе который мы используем, только данные (реплики) приходят не база данной чата (которую поплняет сам скрипт), а с третьего компютютора, с IRC SERVER-а в котором выполнена вся логика самого чата (человек зашел в комнату, вышел, админ может кикать, юзер не может и т.п.), по сему и этот скрипт на хостинге не называют чатом, бо он сам по себе посредник который знает оба языка, но сам почти ни чего не может делать (как переводчик в переговорах двух стран). Вот мы его и называем веб интерфейсом, бо это клиент (интерфейс) на технологии веб-а для подключения к IRC.

Ладно, наверное вам уже надоело читать всю эту теорию... Теперь просто зайдите в чат и наслождайтесь бесседой!
Забыл название ... Это когда браузер не закрывает соединение с веб сервером, а остается "на линии". Стриминг, во



Источник: http://forum.volodymyr.com.ua/index.php?s=&showtopic=1661&view=findpost&p=43974
Категория: Мои статьи | Добавил: igor_ber (2006-06-06) | Автор: Igor Berkovich
Просмотров: 962 | Рейтинг: 5.0 |
Комментарии
Всего комментариев: 4
2006-12-09
4. Игорь Беркович (igor_ber)
Danusya, большое спасибо smile К сожелению илюстрации здесь плохо видны из за ограничения ширины текста... Сама статья была написана мною, хотя тяжело назвать этот текст статьей smile

В оригинале (пост на форуме) все видно хорошо (я тогда долго подстраивал все!!!). Ссылка на оригинал изменилась и теперь она http://forum.volodymyr.com.ua/index.p....p=43974


2006-12-09
3. Danusya
Спасибо.Очень интересная информация.

2006-06-10
2. Игорь Беркович (igor_ber)
Немного подправлено оформление статьи... Всеравно рисунки желают лучшего, да и форма самой статьи ... Опять же - на все нужно время ... Москва не сразу строилась...

2006-06-06
1. Игорь Беркович (igor_ber)
Будет время, подправлю форматирование, т.к. в оригинале в Word'е оно выглядело намного приятние :-)

Имя *:
Email:
WWW:
Код *: