Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Node JS Socket.IO server with perl

by mojo2405 (Acolyte)
on Jan 03, 2018 at 10:16 UTC ( #1206590=perlquestion: print w/replies, xml ) Need Help??
mojo2405 has asked for the wisdom of the Perl Monks concerning the following question:

Hi there, I would like to create a client in perl that can connect to node js socket.io server. I tried this code

use strict; use AnyEvent; use AnyEvent::PocketIO::Client; use PocketIO::Client::IO; #use PocketIO::Client::IO; my $socket = PocketIO::Client::IO->connect("http://127.0.0.1:3001"); my $cv = AnyEvent->condvar; my $w = AnyEvent->timer( after => 5, cb => $cv ); $socket->on( 'message', sub { say $_[1]; } ); $socket->on( 'connect', sub { #$socket->send('Parumon!'); $socket->emit( 'message', { name => 'name', message => 'msg emit' +} ); print "connected"; } ); $cv->wait;

but got this error :

28 {"code":0,"message":"Transport unknown"} 0 at /usr/local/share/perl5/AnyEvent/PocketIO/Client.pm line 86. Can't call method "transport" on an undefined value at socket-perl.pl +line 9.

can anyone help with that ?

Replies are listed 'Best First'.
Re: Node JS Socket.IO server with perl
by NetWallah (Canon) on Jan 04, 2018 at 01:59 UTC
    The error message about transport seems to be coming from your server at port 3001.

    Can you get a "tcpdump" to capture it ?

    Here is the code snippet (in AnyEvent::PocketIO::Client) that is catching the error:

    $socket->on_read( sub { return unless length $_[0]->rbuf; return if $read; my ( $status_line ) = $_[0]->rbuf =~ /^(.+)\015\012/; my ( $code ) = $status_line =~ m{^HTTP/[.01]+ (\d+) }; my $error; if ( $code && $code != 200 ) { $_[0]->rbuf =~ /\015\012\015\012(.*)/sm; $error = { code => $code, message => $1 }; $read++; $cb->( $error, $self ); #<<< Line # 86 <<<< return; }
    Since the "code" is displayed as "0" it is very strange that it it is passing the "if" check.

    I suspect the "$code" contains something like "00", which is later displayed as "0".

                    We're living in a golden age. All you need is gold. -- D.W. Robertson.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1206590]
Approved by marto
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (6)
As of 2018-12-15 23:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    How many stories does it take before you've heard them all?







    Results (70 votes). Check out past polls.

    Notices?