in reply to Re: Perl an array of sockets
in thread Perl an array of sockets
Perhaps people can help me with this code... it's much simpler than previous but I am unable to get ip, port and won't send message or close socket... seems like does nothing... maybe I am not saving socket correctly or not referencing correctly.
use EV; use Asterisk::AMI; use Data::Dumper; use Net::WebSocket::EV; use HTTP::Server::EV; use Digest::SHA1 qw(sha1_base64); use threads; use threads::shared; use strict; $|++; my ($rsv,$opcode,$msg, $status_code); our @users : shared; my @users =(); my $cgi ; my $astman = Asterisk::AMI->new(PeerAddr => '127.0.0.1', PeerPort => '5038', Username => 'admin', Secret => 'emel1t0', Events => 'on', Handlers => { default => \&eventhandler } ); die "Unable to connect to asterisk" unless ($astman); sub eventhandler { my ($ami, $event) = @_; if($event->{'Event'} eq "Dial"){ if($event->{'SubEvent'} eq "Begin"){ &buscar_exten($event->{'ConnectedLineName'}); } if($event->{'SubEvent'} eq "End"){ &buscar_exten($event->{'ConnectedLineName'}); } } } HTTP::Server::EV->new->listen(50080, sub { $cgi = $_[0]; $cgi->header({ STATUS => '101 Switching Protocols', Upgrade => "websocket", Connection => "Upgrade", "Sec-WebSocket-Accept" => scalar sha1_base64( $cgi->{headers}{"Sec-WebSocket-Key"} . "2 +58EAFA5-E914-47DA-95CA-C5AB0DC85B11" ).'=', }); $cgi->{self} = $cgi; $cgi->{buffer}->flush_wait(sub { $cgi->{websocket} = Net::WebSocket::EV::Server->new({ fh => $cgi->{buffer}->give_up_handle, on_msg_recv => sub { ($rsv,$opcode,$msg,$status_code) = @_; my @dlogin=split(":",$msg); if(@dlogin[1] eq ""){ print "no autenticado\n"; } else{ push (@users, $cgi->{websocket}) +; } }, on_close => sub { my($code) = @_; $cgi->{self} = undef; $cgi = undef; }, buffering => 1, }); }); }, { threading => 0 }); sub buscar_exten{ my $exten=@_[0]; my $href; my $role; my $some; print "buscando si <$exten> esta logueada-\n"; foreach my $fn (@users) { open my $fh, ">&=$fn" ;# or warn $! and die; send($fh,"evento llamada $exten\n",0) ; print "}\n"; } } EV::loop;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Perl an array of sockets
by holli (Abbot) on Nov 21, 2017 at 12:21 UTC | |
by suhijo (Novice) on Nov 21, 2017 at 15:19 UTC | |
by roboticus (Chancellor) on Nov 21, 2017 at 16:21 UTC | |
by suhijo (Novice) on Nov 21, 2017 at 17:32 UTC | |
by suhijo (Novice) on Nov 21, 2017 at 19:22 UTC | |
by suhijo (Novice) on Nov 21, 2017 at 20:58 UTC |