Server-Client Verbindungen mit Mojo::IOLoop

Aus Carl-Christian Sautter - Wiki
Wechseln zu: Navigation, Suche

Cpan-Wiki: Mojo::IOLoop - Minimalistic event loop

Server Beispiel:

#!/usr/bin/perl -w

use Mojo::IOLoop;
 
# Warte auf Verbindung auf Port 3000
Mojo::IOLoop->server({port => 3000} => sub {
  my ($loop, $stream) = @_;
 
  $stream->on(read => sub {
    my ($stream, $bytes) = @_;
    
    my $send = ping($bytes);
    
    $stream->write($send);
  });
});

# Starte Loop wenn notwendig
Mojo::IOLoop->start unless Mojo::IOLoop->is_running;

# Aktion PING
sub ping {
     my $parse = shift;
     if($parse =~ m/###PING:START###(.*)###PING:STOP###/){
       print "Test\n";
       print "\n".$1."\n";
     }
     return "Ping received";
}

Client Beispiel:

#!/usr/bin/perl -w

use Mojo::IOLoop;

# Oeffne Verbindung auf Port 3000
my $id = Mojo::IOLoop->client({port => 3000} => sub {
  my ($loop, $err, $stream) = @_;
 
  $stream->on(read => sub {
    my ($stream, $bytes) = @_;
 
    print "From Server: $bytes\n";
  });
 
  $stream->write("###PING:START###testinhalt###PING:STOP###");
});
 
# Timer hinzufügen
Mojo::IOLoop->timer(1 => sub {
  my $loop = shift;
  $loop->remove($id);
});
 
# Starte Loop wenn notwendig
Mojo::IOLoop->start unless Mojo::IOLoop->is_running;