Мне нужно открыть соединение через веб-сокет из Perl с сервером.Я получил его на echo.websocket.org, но когда я заменяю websocket.org реальным сервером, рукопожатие не удается.Я подозреваю, что мне нужно отправить несколько дополнительных заголовков, но я не уверен, как это сделать.Я использую Mojolicious, чтобы установить соединение:
use strict;
use Mojo::UserAgent;
use Mojo::IOLoop;
# Open WebSocket
my $ua = Mojo::UserAgent->new;
$ua->websocket('wss://someserver.com/' => {
'Origin' => 'https://www.myserver.com',
'Sec-WebSocket-Extensions' => 'permessage-deflate'
} => sub {
my ($ua, $tx) = @_;
# Check if WebSocket handshake was successful
unless( $tx->is_websocket ) {
print "Handshake failed!\n";
return;
}
# Wait for WebSocket to be closed
$tx->on(finish => sub {
my ($tx, $code, $reason) = @_;
print "WebSocket closed with status $code.\n";
});
# Close WebSocket after receiving one message
$tx->on(message => sub {
my ($tx, $msg) = @_;
print "WebSocket message: $msg\n";
$tx->finish;
});
# Send a message to the server
$tx->send("Hello world!");
});
# Start event loop if necessary
Mojo::IOLoop->start unless Mojo::IOLoop->is_running;
print "Done.\n";
Как видите, я пытаюсь добавить два заголовка запроса: Origin и Sec-WebSocket-Extensions.
Это правильный способ сделать это?Я спрашиваю, потому что рукопожатие все еще не удается.