The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
use strict;
use Jabber::Connection;
use Jabber::NodeFactory;
use Jabber::NS qw(:all);

my $nf = new Jabber::NodeFactory;

my $c = new Jabber::Connection(
  server => 'localhost',
  log    => 1,
);

$c->connect or die "oops: ".$c->lastError;
$c->register_handler('message', \&message);
$c->auth('a', 'pass', 'client');

my $m = $nf->newNode('message');
$m->insertTag('body')->data('hello');
$m->attr('to', 'dj@localhost');
$c->send($m);
$c->send('<presence/>');

my $iq = $nf->newNode('iq');
$iq->attr('type', IQ_GET);
$iq->attr('to', 'localhost');
$iq->insertTag('query', NS_TIME);
$c->send($iq);

$c->process(5);

$c->disconnect;


sub message {

  my $node = shift;
  print "Received --> ", $node->toStr, "\n";

}