IRC клиент на AS3

Написал примитивный 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 #канал : перед текстом сообщения.

33 Responses to IRC клиент на AS3

  1. Отличный пример, все лаконично и наглядно. Респект!

  2. Спасибо!
    Только, правда, он не совсем правилен с точки зрения AS3 (подписка на события), ну да ладно. :)

  3. Здравствуйте,

    Когда-то давно, под 8-й версией flash, я пытался создать клиент. Проблема была не только в нулл-байте (“/n” – “/n/r”), но еще и в удаленности ирк-сервера (требует кроссдомен.хмл). Видимо, с концом исправили, а что насчет политики безопасности? Я до сих пор под 8-й, поэтому не могу оценить все прелести примера.

  4. Нет, это другой сокет, класс Socket, а XMLSocket остался тем же, что и раньше.

    Что же до политики безопасности, то её, в принципе, надо настраивать, но у меня вроде проблем не было — уже давно всё настроено.

  5. Понятно. Отстал от жизни.

    Для XMLSocket -
    System.security.loadPolicyFile(“xmlsocket://foo.com:414″); если ролик загружен НЕ с физического сервера, на котором запущен ирк-сервер. Так, можно коннектиться к любому каналу, на любом удаленном сервере? Не могли же они пренебречь политикой…

  6. Никто ей не пренебрегал, загрузку crossdomain тоже никто не отменял, просто если запускать это дело локально в IDE, то всё будет работать. Если запускать в плеере локально, то нужно разрешить обращение к удаленному серверу (настроив на сайте макроба). В остальных случаях — crossdomain. Впрочем, так всегда и было :)

  7. Жаль. Всегда хотелось поюзать чужой сокет-сервер, притом, с моего хоста и бесплатно.

    Было дело, наткнулся я на блог английского девелопера, который модифицировал ирк-сервер “Unreal”, прописал – и радостно сообщил – “пользуйтесь”. Халявщиков оказалось слишком много (бесконечно падает).

    Ладно :)
    Спасибо за консультацию!

  8. <allow-access-from domain=”*” to-ports=”*” /> а чего это он сам в html-сущности не переводит?

  9. Кто не переводит и что не переводит?

  10. Дневник. Не переводит уголки “<”, “>” в их сущностное представление – “& lt;”, “& gt;”. Стриптагс делает (просто если надо пример показать, он вырезает).

  11. Я все-равно ничего не понял. HTML юзать не получится, скобки и так будут скобками, а если нужна подстановка, то надо писать подстановку. В чем проблема, я не понимаю…

  12. Нет проблемы.

    Просто, целый блок (с примером) из комментария пропал (смысл потерялся). Обычно делают преобразование в сущности, а не удаление (strip_tags удаляет все, что начинается с < и заканчивается >).

    Флуд получился :) , извини.

  13. Для этого есть тег <code>
    Вроде работает.

  14. Вот еще линк на 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

  15. Прошу прощения, с flash я даже не на Вы, не могли бы вы подробнее объяснить, что я должен сделать, чтобы ваш IRC клиент заработал? А то “Копируем Client.as в ru/etcs/irc/, создаём новый документ, ставим Document class — ru.etcs.irc.Client” говорит мало о чём, а посмотреть очень хочется. Заранее спасибо =)

  16. 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)

  17. __етк, а можно сделать некю волшебную сборку, обходящуюпроблему “open proxy found”? – вот ето было бы дело! А то я с работы не могу попасть в irc..

  18. А у тебя вообще какой-нибудь IRC-клиент работает?
    В принципе, ты можешь попробовать другой сервак.

  19. Я разные пробовал серваки. Ни один не пашет.
    клиент юзаю neora trion

  20. А в нем какой сервер прописан?

  21. щас – diona

  22. irc.dion.ru?
    Может, тебе стоит заюзать прокси. Или нужно посылать ещё какие-то команды серверу, о которых я не знаю.

  23. нда. морочно. надо написать чат – мультиклиент для irc -)
    Вот ето будет хорошый скрипт -)

  24. myxus January, а при чем тут клиент?
    “open proxy found” означает, что на твоем хосте открыт извне один из стандартных для прокси портов (80 8080 3128)

  25. Pingback: Записки о Flash » Новый канал про флеш в сети DALnet.RU

  26. Подскажи в твоём примере надо настроить Security. А то при запуски с компа неидёт соеденение :)

  27. почему если нажать ctrl + enter в adobe flash прога запыхтит и законектится, а вот запустив откомпилированный файл просто экран с полем для ввода. или оно ждет команды?

  28. «Оно» ждет кроссдоменника от сокет-сервера, а он не умеет их отдавать.

  29. ладно ) видимо я не так спросил.
    мне надо положить это в php – чтобы когда человек зашел на страницу – конектился к каналу…
    или может кнопку какую создать можно?

  30. Я боюсь, что без непосредственной модификации irc-сервера у вас ничего не получится, причина в моём предыдущем посте.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>