AnyEvent-WebSocket-Client
view release on metacpan or search on metacpan
lib/AnyEvent/WebSocket/Client.pm view on Meta::CPAN
# $message isa AnyEvent::WebSocket::Message
my($connection, $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;
=head1 DESCRIPTION
This class provides an interface to interact with a web server that provides
services via the WebSocket protocol in an L<AnyEvent> context. It uses
L<Protocol::WebSocket> rather than reinventing the wheel. You could use
L<AnyEvent> and L<Protocol::WebSocket> directly if you wanted finer grain
control, but if that is not necessary then this class may save you some time.
The recommended API was added to the L<AnyEvent::WebSocket::Connection>
class with version 0.12, so it is recommended that you include that version
when using this module. The older version of the API has since been
deprecated and removed.
=head1 ATTRIBUTES
=head2 timeout
Timeout for the initial connection to the web server. The default
is 30.
=head2 ssl_no_verify
If set to true, then secure WebSockets (those that use SSL/TLS) will
not be verified. The default is false.
=head2 ssl_ca_file
Provide your own CA certificates file instead of using the system default for
SSL/TLS verification.
=head2 protocol_version
The protocol version. See L<Protocol::WebSocket> for the list of supported
WebSocket protocol versions.
=head2 subprotocol
List of subprotocols to request from the server. This class will throw an
exception if none of the protocols are supported by the server.
=head2 http_headers
Extra headers to include in the initial request. May be either specified
as a hash reference, or an array reference. For example:
AnyEvent::WebSocket::Client->new(
http_headers => {
'X-Foo' => 'bar',
'X-Baz' => [ 'abc', 'def' ],
},
);
AnyEvent::WebSocket::Client->new(
http_headers => [
'X-Foo' => 'bar',
'X-Baz' => 'abc',
'X-Baz' => 'def',
],
);
Will generate:
X-Foo: bar
X-Baz: abc
X-Baz: def
Although, the order cannot be guaranteed when using the hash style.
=head2 max_payload_size
The maximum payload size for received frames. Currently defaults to whatever
L<Protocol::WebSocket> defaults to.
=head2 max_fragments
The maximum number of fragments for received frames. Currently defaults to whatever
L<Protocol::WebSocket> defaults to.
=head2 env_proxy
If you set true to this boolean attribute, it loads proxy settings
from environment variables. If it finds valid proxy settings,
C<connect> method will use that proxy.
Default: false.
For C<ws> WebSocket end-points, first it reads C<ws_proxy> (or
C<WS_PROXY>) environment variable. If it is not set or empty string,
then it reads C<http_proxy> (or C<HTTP_PROXY>). For C<wss> WebSocket
end-points, it reads C<wss_proxy> (C<WSS_PROXY>) and C<https_proxy>
(C<HTTPS_PROXY>) environment variables.
=head1 METHODS
=head2 connect
my $cv = $client->connect($uri)
my $cv = $client->connect($uri, $host, $port);
( run in 1.783 second using v1.01-cache-2.11-cpan-f56aa216473 )