Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> AnyEvent::XMPP 
:(
    Опции темы
DaemonSuw
Дата 14.4.2009, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: 3
Всего: 3



Доброго времени суток... Нужно написать бота для jabber-а... На спане есть модуль AnyEvent::XMPP... 
1. Он не собирается под винду, тоесть собирается все кроме доп. модуля, который ему нужен, а именно
Цитата

C:\Net-LibIDN-0.12>makefile.pl
Set up gcc environment - 3.4.5 (mingw-vista special r3)
'cc' is not recognized as an internal or external command,
operable program or batch file.
__test1.c:1:18: idna.h: No such file or directory
This module requires GNU Libidn, which could not be found.

C:\Net-LibIDN-0.12>dmake
dmake:  Error: -- No target


2. а на никсах не работает код... простейший даже коннекта...(((
что то вроде этого

Код

use AnyEvent::XMPP::IM::Connection;
   my $con = AnyEvent::XMPP::IM::Connection->new
(
         username => "277612979",
         domain => "jabber.org",
         password => '....',
         resource => "AnyEvent::XMPP",
);
    $con->connect;
    print "no connecnt" unless $con->is_connected; 
    $con->send_message("sdasd", '[email protected]', undef, 'normal');

В ком строку получаю 
Цитата

Can't locate object method "push_write" via package "Guard" at /usr/lib/perl5/site_perl/5.8.8/AnyEvent/XMPP/SimpleConnection.pm line 113.
no connecnt



в чем проблема... подскажите что делаю не так? на никсах был модуль установлен не мною... возможно тоже криво...
кто нибудь работал с этим модулем? 





Это сообщение отредактировал(а) DaemonSuw - 14.4.2009, 20:14
PM MAIL ICQ   Вверх
arto
Дата 14.4.2009, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



почему не Net::Jabber ?
PM MAIL ICQ   Вверх
DaemonSuw
Дата 14.4.2009, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: 3
Всего: 3



arto, вы тестировали этот модуль? Последний релиз очень древний( 06 Sep 2004....
Я думаю к сожалению он не подойдет... мне нужно реализовать бота который бы реагировал на любое событие в контакт листе - смена статуса, отправка сообщения боту, генерить отправку ботом сообщений пользователю по специфическим его свойствам... по сути автоматизировать распределение заказов... в модуле AnyEvent::XMPP (даже из названия понятно, что он заточен на опрос событий)...
Например... имеем в описании событие...
Цитата

message_xml => $node -  This event is sent when a message stanza is received.

В теории пишем примерно следующее и получем обработчик событий ;)... ну в данном контексте пытаемся получить))))
Код

$con->reg_cb (before_iq_xml => sub 
         {
          my ($con, $node) = @_;
          $self->parse_message($note->text);
          # или
          $self->save_to_db($note->name, $note->text);
          });



Это сообщение отредактировал(а) DaemonSuw - 15.4.2009, 00:04
PM MAIL ICQ   Вверх
DaemonSuw
Дата 15.4.2009, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: 3
Всего: 3



С коннектом разобрался... смутил метод is_connected который постоянно возвращает 0... 
Зато после модификации кода в джабере появляется онлайн бот :0)
Проблема в следующем как проверить что бот законнектин...?

Код

use AnyEvent::XMPP::IM::Connection;
use AnyEvent::XMPP::Client;

   my $con = AnyEvent::XMPP::IM::Connection->new
        (
         username => "277612979",
         domain => "jabber.org",
         password => '.....',
         resource => "AnyEvent::XMPP",
        );

   my $cl = AnyEvent::XMPP::Client->new;
   $cl->start;
   my $j = AnyEvent->condvar;
   $j->wait;



PM MAIL ICQ   Вверх
ginnie
Дата 15.4.2009, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



DaemonSuw, не хочу Вас огорчать, но AnyEvent в названии модуля никакого отношения к событиям, происходящим в jabber-клиенте не имеет. AnyEvent - это модуль, который позволяет реализовать свою обработку событий не привязываясь к конкретной событийной машине (EV, Event и т.п.). Событиями в событийной машине являются чтение и запись в поток ввода/вывода, срабатывание таймена, работа с сигналами и дочерними процессами.
Те события, которые нужны Вам должны обрабатываться модулем, насколько хорошо это делается (и делается ли вообще) можно узнать только по содержимому модуля, а не по названию.
Модуль AnyEvent::XMPP новее из-за того, что сам AnyEvent достаточно молодой. Я пытался его (AnyEvent) использовать для резализации многопоточного (без использования потоков) http-клиента, но возникли проблемы (модуль корректно не удалял объекты из памяти, автор ошибку признавать не хотел), поэтому пришлось перейти на EV (о чем я ни минуты не пожалел :о). 

Это сообщение отредактировал(а) ginnie - 15.4.2009, 12:09


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
DaemonSuw
Дата 15.4.2009, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: 3
Всего: 3



ginnie, То я так понимаю что данный модуль вам не подошел и вы использовали EV? Где про EV можно найти информацию?Это он (http://search.cpan.org/~mlehmann/EV-3.53/)? и где можно поподробнее узнать про работу событийной машины в jabber-e и возможно работает с его соб. машиной через этот модуль?

Это сообщение отредактировал(а) DaemonSuw - 15.4.2009, 19:13
PM MAIL ICQ   Вверх
shamber
Дата 15.4.2009, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



DaemonSuw, в jabber нет событийной машины, насколько я понимаю
PM MAIL Jabber   Вверх
ginnie
Дата 15.4.2009, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



DaemonSuw, мне не подошел модуль AnyEvent, но для целей никак не связанных с XMPP! Если проблемы в модуле AnyEvent автор не исправил (я надеюсь, что исправил :о), то возможны разные неприятности при использовании AnyEvent::XMPP.
Событийная машина AnyEvent используется для двухсторонней передачи данных в TCP-соединении между jabber-клиентом и jabber-сервером.
По поводу незрелости AnyEvent::XMPP я был не прав, т.к. этот модуль стал развитием модуля Net::XMPP2.
К сожалению, опыта использования AnyEvent::XMPP у меня нет, поэтому подсказать что-либо дельное я не могу. Пытался написать XMPP-клиента, отсылающего логи с сервера, но возникли некоторые сложности с получением offline-сообщений через google, после чего разработку забросил. Я использовал Net::XMPP. Там есть подобие событийной машины. События фиксированные (onconnect, onauth и т.п.), в явном виде того, что Вам надо нет, но при хорошем знании XMPP доработать функционал не очень сложно. Я хорошего знания XMPP не получил (надеюсь, все еще впереди :о).

Это сообщение отредактировал(а) ginnie - 15.4.2009, 19:58


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0987 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.