Re: any blocked websocket client for perl?

Raunak Kathuria <[email protected]>
Newsgroups gmane.comp.lang.perl.beginners
Message-ID <CAEHnM2JQ4O=rbFWNTDd9bOw7Q+w5CVEA1D4_oyBW5tWuot2W4g@mail.gmail.com>
Have a look at
https://metacpan.org/pod/Net::Async::WebSocket

For client:
https://metacpan.org/pod/Net::Async::WebSocket::Client

On Thu, 4 Feb 2021 at 10:32 AM, Wesley Peng <[email protected]> wrote:

> I am trying to find a websocket client for perl.
> But most modules on cpan is asynchronous, such as
> AnyEvent::WebSocket::Client.
> Do you know if there is a synchronous websocket client library available?
>
> Thanks in advance.
>
>
> BTW, I tried to use the anyevent module above to access my WS service, it
> doesn't work.
> When program run, it just hangs without any output.
> Can you see why this happens?
> The code as below:
>
> use strict;
>
> use JSON;
>
> use Data::Dumper;
>
> use AnyEvent::WebSocket::Client 0.12;
>
>
>
> my $client = AnyEvent::WebSocket::Client->new;
>
> my $url =
> 'ws://localhost:8080/ws/v2/producer/persistent/public/default/my-topic';
>
>
>
>
> $client->connect($url)->cb(sub {
>
>
>
>   # make $connection an our variable rather than
>
>   # my so that it will stick around.  Once the
>
>   # connection falls out of scope any callbacks
>
>   # tied to it will be destroyed.
>
>   our $connection = eval { shift->recv };
>
>   if($@) {
>
>     # handle error...
>
>     warn $@;
>
>     return;
>
>   }
>
>
>
>   # send a message through the websocket...
>
>   my $payload = encode_json({'payload' => 'hello world'});
>
>   $connection->send($payload);
>
>
>
>   # recieve message from the websocket...
>
>   $connection->on(each_message => sub {
>
>     # $connection is the same connection object
>
>     # $message isa AnyEvent::WebSocket::Message
>
>     my($connection, $message) = @_;
>
>     print Dumper decode_json($message);
>
>   });
>
>
>
>   # handle a closed connection...
>
> #  $connection->on(finish => sub {
>
> #    # $connection is the same connection object
>
> #    my($connection) = @_;
>
> #    ...
>
> #  });
>
>
>
>   # close the connection (either inside or
>
>   # outside another callback)
>
> #  $connection->close;
>
>
>
> });
>
>
>
> ## uncomment to enter the event loop before exiting.
>
> ## Note that calling recv on a condition variable before
>
> ## it has been triggered does not work on all event loops
>
> AnyEvent->condvar->recv;
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.