Protocol::WebSocket − WebSocket protocol
# Server side
my $hs =
Protocol::WebSocket::Handshake::Server−>new;
$hs−>parse('some data from the client');
$hs−>is_done; # tells us when handshake is done
my $frame = $hs−>build_frame;
$frame−>append('some data from the client');
while (defined(my $message = $frame−>next)) {
if ($frame−>is_close) {
# Send close frame back
send(
$hs−>build_frame(
type => 'close',
version => $version
)−>to_bytes
);
return;
}
# We got a message!
}
Client/server WebSocket message and frame parser/constructor. This module does not provide a WebSocket server or client, but is made for using in http servers or clients to provide WebSocket support.
Protocol::WebSocket supports the following WebSocket protocol versions:
draft−ietf−hybi−17
(latest)
draft−ietf−hybi−10
draft−ietf−hybi−00 (with HAProxy support)
draft−hixie−75
By default the latest version is used. The WebSocket version is detected automatically on the server side. On the client side you have set a "version" attribute to an appropriate value.
Protocol::WebSocket itself does not contain any code and cannot be used directly. Instead the following modules should be used:
Protocol::WebSocket::Server
Server helper class.
Protocol::WebSocket::Client
Client helper class.
Protocol::WebSocket::Handshake::Server
Server handshake parser and constructor.
Protocol::WebSocket::Handshake::Client
Client handshake parser and constructor.
Protocol::WebSocket::Frame
WebSocket frame parser and constructor.
Protocol::WebSocket::Request
Low level WebSocket request parser and constructor.
Protocol::WebSocket::Response
Low level WebSocket response parser and constructor.
Protocol::WebSocket::URL
Low level WebSocket url parser and constructor.
For examples on how to use Protocol::WebSocket with various event loops see "examples/" directory in the distribution.
In order of appearance:
Paul "LeoNerd" Evans
Jon Gentle
Lee Aylward
Chia-liang Kao
Atomer Ju
Chuck Bredestege
Matthew Lien (BlueT)
Joao Orui
Toshio Ito (debug-ito)
Neil Bowers
Michal Å paÄek
Graham Ollis
Anton Petrusevich
Eric Wastl
Viacheslav Tykhanovskyi, "[email protected]".
Copyright (C) 2010−2018, Viacheslav Tykhanovskyi.
This program is free software, you can redistribute it and/or modify it under the same terms as Perl 5.10.