Написал примитивный IRC-клиент в среде Flash 9 ![]()
Код под катом.
This content requires Adobe Flash Player.
Копируем Client.as в ru/etcs/irc/, создаём новый документ, ставим Document class — ru.etcs.irc.Client, запускаем и вуаля, заходите в гости
«Интерфейс», конечно, не ахти, да и много служебной информации выводится, но что вы хотите от 4,5 КБ кода?
Быть может, потом напишу mIRC на Flex…
з.Ы. Все команды IRC поддерживаются, но в полном виде, а не в привычном для mIRC:
Для захода на канал: /join #канал
Для выхода из канала: /part #канал
Для сообщения в канал (если текущий канал не совпадает с прописанным в коде): /privmsg #канал :<текст>
Для приватного сообщения: /privmsg <ник> :<текст>
Для выхода из сети: /quit <текст с прощанием, необязательно>
Смена ника: /nick <ник>
Остальные команды можно использовать так: /[команда IRC-протокола]
CTCP запросы посылать не получится, т.к. для них требуются символы \x01…
Если текущий канал совпадает с прописанным в коде, то для посылки сообщения не требуется ввода /privmsg #канал : перед текстом сообщения.
Отличный пример, все лаконично и наглядно. Респект!
Спасибо!
Только, правда, он не совсем правилен с точки зрения AS3 (подписка на события), ну да ладно.
Здравствуйте,
Когда-то давно, под 8-й версией flash, я пытался создать клиент. Проблема была не только в нулл-байте (“/n” – “/n/r”), но еще и в удаленности ирк-сервера (требует кроссдомен.хмл). Видимо, с концом исправили, а что насчет политики безопасности? Я до сих пор под 8-й, поэтому не могу оценить все прелести примера.
Нет, это другой сокет, класс Socket, а XMLSocket остался тем же, что и раньше.
Что же до политики безопасности, то её, в принципе, надо настраивать, но у меня вроде проблем не было — уже давно всё настроено.
Понятно. Отстал от жизни.
Для XMLSocket -
System.security.loadPolicyFile(“xmlsocket://foo.com:414″); если ролик загружен НЕ с физического сервера, на котором запущен ирк-сервер. Так, можно коннектиться к любому каналу, на любом удаленном сервере? Не могли же они пренебречь политикой…
Никто ей не пренебрегал, загрузку crossdomain тоже никто не отменял, просто если запускать это дело локально в IDE, то всё будет работать. Если запускать в плеере локально, то нужно разрешить обращение к удаленному серверу (настроив на сайте макроба). В остальных случаях — crossdomain. Впрочем, так всегда и было
Жаль. Всегда хотелось поюзать чужой сокет-сервер, притом, с моего хоста и бесплатно.
Было дело, наткнулся я на блог английского девелопера, который модифицировал ирк-сервер “Unreal”, прописал – и радостно сообщил – “пользуйтесь”. Халявщиков оказалось слишком много (бесконечно падает).
Ладно
Спасибо за консультацию!
<allow-access-from domain=”*” to-ports=”*” /> а чего это он сам в html-сущности не переводит?
Кто не переводит и что не переводит?
Дневник. Не переводит уголки “<”, “>” в их сущностное представление – “& lt;”, “& gt;”. Стриптагс делает (просто если надо пример показать, он вырезает).
Я все-равно ничего не понял. HTML юзать не получится, скобки и так будут скобками, а если нужна подстановка, то надо писать подстановку. В чем проблема, я не понимаю…
Нет проблемы.
Просто, целый блок (с примером) из комментария пропал (смысл потерялся). Обычно делают преобразование в сущности, а не удаление (strip_tags удаляет все, что начинается с < и заканчивается >).
Флуд получился
, извини.
Для этого есть тег <code>
Вроде работает.
Стандарты по IRC
http://www.ietf.org/rfc/rfc2810.txt
http://www.ietf.org/rfc/rfc2811.txt
http://www.ietf.org/rfc/rfc2812.txt
http://www.ietf.org/rfc/rfc2813.txt
Спасибо
Вот еще линк на AS3 IRC клиент
http://blog.je2050.de/?p=90
написан похоже под альфу флекса – для сборки его необходимо немного пофиксить.
Из плюшек – более развитая модель событий, статичная библиотека с кодами сообщений:
static public const ERR_UNKNOWNCOMMAND: String = '421';
static public const ERR_NOMOTD: String = '422';
static public const ERR_NOADMININFO: String = '423';
... etc
Прошу прощения, с flash я даже не на Вы, не могли бы вы подробнее объяснить, что я должен сделать, чтобы ваш IRC клиент заработал? А то “Копируем Client.as в ru/etcs/irc/, создаём новый документ, ставим Document class — ru.etcs.irc.Client” говорит мало о чём, а посмотреть очень хочется. Заранее спасибо =)
1) Создаем новый документ во Flash 9
2) Сохраняем его
3) Создаем в той же папке, где лежит fla файл папку ru, в ней etcs, в etcs — папку irc.
4) Копируем содержимое листинга кода в блокнот и сохраняем файлом Client.as в папку irc, т.е. путь к классу будет ru/etcs/irc/Client.as (если лень создавать папки — не создавайте, уберите из класса путь ru.etcs.irc и просто сохраните файл Client.as рядом с fla)
5) Пишем на панели свойств документа в поле Document Class «ru.etcs.irc.Client» (без кавычек) или «Client» (если не создавали папки)
6) Запускаем проект (Ctrl+Enter)
__етк, а можно сделать некю волшебную сборку, обходящуюпроблему “open proxy found”? – вот ето было бы дело! А то я с работы не могу попасть в irc..
А у тебя вообще какой-нибудь IRC-клиент работает?
В принципе, ты можешь попробовать другой сервак.
Я разные пробовал серваки. Ни один не пашет.
клиент юзаю neora trion
А в нем какой сервер прописан?
щас – diona
irc.dion.ru?
Может, тебе стоит заюзать прокси. Или нужно посылать ещё какие-то команды серверу, о которых я не знаю.
нда. морочно. надо написать чат – мультиклиент для irc -)
Вот ето будет хорошый скрипт -)
myxus January, а при чем тут клиент?
“open proxy found” означает, что на твоем хосте открыт извне один из стандартных для прокси портов (80 8080 3128)
Pingback: Записки о Flash » Новый канал про флеш в сети DALnet.RU
Подскажи в твоём примере надо настроить Security. А то при запуски с компа неидёт соеденение
почему если нажать ctrl + enter в adobe flash прога запыхтит и законектится, а вот запустив откомпилированный файл просто экран с полем для ввода. или оно ждет команды?
«Оно» ждет кроссдоменника от сокет-сервера, а он не умеет их отдавать.
ладно ) видимо я не так спросил.
мне надо положить это в php – чтобы когда человек зашел на страницу – конектился к каналу…
или может кнопку какую создать можно?
Я боюсь, что без непосредственной модификации irc-сервера у вас ничего не получится, причина в моём предыдущем посте.