Il y a Net::Msmgr
module sur CPAN. Il est écrit propre et le code semble digne de confiance au premier coup d'œil. Cependant ce module semble être bêta et il y a peu de documentation et pas de tests: -/Pourquoi Perl Net :: Msmgr se bloque-t-il lorsque j'essaie de m'authentifier?
Quelqu'un at-il utilisé ce module en production? Je n'ai pas encore réussi à le faire fonctionner, car il faut que tout le traitement des boucles d'événements soit fait dans l'application et comme je l'ai déjà dit, il y a peu de documentation et aucun exemple de travail à étudier.
C'est là que je suis allé à ce jour:
#!/usr/bin/perl
use strict;
use warnings;
use Event;
use Net::Msmgr::Object;
use Net::Msmgr::Session;
use Net::Msmgr::User;
use constant DEBUG => 511;
use constant EVENT_TIMEOUT => 5; # seconds
my ($username, $password) = qw/[email protected] my.password/;
my $buddy = '[email protected]';
my $user = Net::Msmgr::User->new(user => $username, password => $password);
my $session = Net::Msmgr::Session->new;
$session->debug(DEBUG);
$session->login_handler(\&login_handler);
$session->user($user);
my $conv;
sub login_handler {
my $self = shift;
print "LOGIN\n";
$self->ui_state_nln;
$conv = $session->ui_new_conversation;
$conv->invite($buddy);
}
our %watcher;
sub ConnectHandler {
my ($connection) = @_;
warn "CONNECT\n";
my $socket = $connection->socket;
$watcher{$connection} = Event->io(fd => $socket,
cb => [ $connection, '_recv_message' ],
poll => 're',
desc => 'recv_watcher',
repeat => 1);
}
sub DisconnectHandler {
my $connection = shift;
print "DISCONNECT\n";
$watcher{$connection}->cancel;
}
$session->connect_handler(\&ConnectHandler);
$session->disconnect_handler(\&DisconnectHandler);
$session->Login;
Event::loop();
C'est ce qu'il génère:
Dispatch Server connecting to: messenger.hotmail.com:1863
Dispatch Server connected
CONNECT
Dispatch Server >>>VER 1 MSNP2 CVR0
--> VER 1 MSNP2 CVR0
Dispatch Server >>>USR 2 MD5 I [email protected]
--> USR 2 MD5 I [email protected]
Dispatch Server <<<VER 1 CVR0
<-- VER 1 CVR0
Et voilà tout, ici il se bloque. Le gestionnaire à la connexion n'est pas déclenché. Qu'est-ce que je fais mal?
Merci, je les lis. Et la source aussi. – codeholic
Mes questions sont assez difficiles, car j'essaie toujours d'obtenir des informations par moi-même avant de demander sur SO. Si je dis qu'il y a peu de documentation, cela signifie que j'ai déjà lu toute la documentation que j'ai pu trouver (documentation sur le CPAN en premier lieu) et qu'elle n'a pas répondu à ma question. Je ne demande pas comment résumer deux nombres. Et j'accepte les réponses qui répondent à mes questions. Est-ce la démotivation? Eh bien, je ne sais pas, que dois-je faire alors? Faire semblant? – codeholic
Pourquoi -ve, n'importe quelle raison. – Space