#!/usr/bin/env perl
use 5.012;
use lib 'blib/lib', 'blib/arch', 't/lib';
use Benchmark qw/timethis timethese cmpthese/;
use URI::XS;
use Protocol::WebSocket::Fast::ClientParser;
use Protocol::WebSocket::Fast::ServerParser;
use Protocol::WebSocket::Frame;
my $client = Protocol::WebSocket::Fast::ClientParser->new;
my $req_str = $client->connect_request({
uri => URI::XS->new("ws://example.com/"),
ws_key => "dGhlIHNhbXBsZSBub25jZQ==",
ws_protocol => "chat",
ws_extensions => [ [ 'permessage-deflate'] ],
headers => {
'Origin' => 'http://www.crazypanda.ru',
'User-Agent' => 'My-UA',
},
});
my $server = Protocol::WebSocket::Fast::ServerParser->new;
my $req = $server->accept($req_str);
my $accept_reply_str = $req->error ? $server->accept_error : $server->accept_response;
my $reply = $client->connect($accept_reply_str);
$client->established;
$client->is_deflate_active;
$server->is_deflate_active;
my $data = $server->send_message(opcode => OPCODE_TEXT, deflate => 0, payload => "Lorem ipsum dolor " x 10);
cmpthese(-1, {
"Protocol::WebSocket::Fast" => sub { $client->get_messages($data) },
"Protocol::WebSocket " => sub { Protocol::WebSocket::Frame->new($data)->next },
});