AnyEvent::WebSocket::Connection - WebSocket connection for AnyEvent
version 0.55
# send a message through the websocket... $connection->send('a message'); # recieve message from the websocket... $connection->on(each_message => sub { # $connection is the same connection object # $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 an opened connection # (can do this either inside or outside of # a callback) $connection->close;
(See AnyEvent::WebSocket::Client or AnyEvent::WebSocket::Server on how to create a connection)
This class represents a WebSocket connection with a remote server or a client.
If the connection object falls out of scope then the connection will be closed gracefully.
This class was created for a client to connect to a server via AnyEvent::WebSocket::Client, and was later extended to work on the server side via AnyEvent::WebSocket::Server. Once a WebSocket connection is established, the API for both client and server is identical.
The underlying AnyEvent::Handle object used for the connection. WebSocket handshake MUST be already completed using this handle. You should not use the handle directly after creating AnyEvent::WebSocket::Connection object.
Usually only useful for creating server connections, see below.
If set to true, it masks outgoing frames. The default is false.
The subprotocol returned by the server. If no subprotocol was requested, it may be undef
.
The maximum payload size for received frames. Currently defaults to whatever Protocol::WebSocket defaults to.
The maximum number of fragments for received frames. Currently defaults to whatever Protocol::WebSocket defaults to.
If provided by the other side, the code that was provided when the connection was closed.
If provided by the other side, the reason for closing the connection.
If the connection is closed due to a network error, this will hold the message.
$connection->send($message);
Send a message to the other side. $message
may either be a string (in which case a text message will be sent), or an instance of AnyEvent::WebSocket::Message.
$connection->on(each_message => $cb); $connection->on(each_message => $cb); $connection->on(finish => $cb);
Register a callback to a particular event.
For each event $connection
is the AnyEvent::WebSocket::Connection and and $message
is an AnyEvent::WebSocket::Message (if available).
Returns a coderef that unregisters the callback when invoked.
my $cancel = $connection->on( each_message => sub { ... }); # later on... $cancel->();
$cb->($connection, $message, $unregister)
Called each time a message is received from the WebSocket. $unregister
is a coderef that removes this callback from the active listeners when invoked.
$cb->($connection, $message)
Called only for the next message received from the WebSocket.
[0.49]
Adding a next_message callback from within a next_message callback will result in a callback called on the next message instead of the current one. There was a bug in previous versions where the callback would be called immediately after current set of callbacks with the same message.
$cb->($connection, $text_error_message)
Called if there is an error parsing a message sent from the remote end. After this callback is called, the connection will be closed. Among other possible errors, this event will trigger if a frame has a payload which is larger that max_payload_size
.
$cb->($connection, $message)
Called when the connection is terminated. If the connection is terminated due to an error, the message will be provided as the second argument. On a cleanly closed connection this will be `undef`.
$connection->close; $connection->close($code); $connection->close($code, $reason);
Close the connection. You may optionally provide a code and a reason. See section 5.5.1 and section 7.4.1 of RFC6455.
The code is a 16-bit unsigned integer value that indicates why you close the connection. By default the code is 1000.
The reason is a character string (not an octet string) that further describes why you close the connection. By default the reason is an empty string.
Although written originally to work with AnyEvent::WebSocket::Client, this class was designed to be used for either client or server WebSocket connections. For details, contact the author and/or take a look at the source for AnyEvent::WebSocket::Client and the examples that come with Protocol::WebSocket.
Author: Graham Ollis <plicease@cpan.org>
Contributors:
Toshio Ito (debug-ito, TOSHIOITO)
José Joaquín Atria (JJATRIA)
Kivanc Yazan (KYZN)
Yanick Champoux (YANICK)
Fayland Lam (FAYLAND)
Daniel Kamil Kozar (xavery)
This software is copyright (c) 2013-2022 by Graham Ollis.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.