Несколько дней назад я установил пакет Mojolicious на свой локальный компьютер, потому что мне нужно было реализовать websocket в одной из моих программ Perl на моем производственном сервере. Он установился без проблем, и я смог запустить простой тестовый скрипт:
use strict;
use warnings;
use Mojo::UserAgent;
use Mojo::IOLoop;
# Open WebSocket
my $ua = Mojo::UserAgent->new;
$ua->insecure(1); # Otherwise the handshake will fail
$ua->websocket('wss://some.server.com' => 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
print "Sending...\n";
$tx->send("Hi there!");
});
# Start event loop if necessary
Mojo::IOLoop->start unless Mojo::IOLoop->is_running;
print "Done!\n";
Я тестировал это на сервере, у которого была небольшая проблема с его сертификатом, поэтому я добавил эту строку:
$ua->insecure(1); # Otherwise the handshake will fail
Когда я, наконец, заработал, добавив эту строку, я установил Mojolicious на свой рабочий сервер, скопировал поверх приведенного выше сценария perl, и он также прекрасно работал там.
Затем я вернулся к своему сценарию на локальном компьютере и запустил его снова. К моему большому удивлению, теперь я получил сообщение об ошибке:
Не удается найти метод объекта "небезопасный" через пакет "Mojo :: UserAgent" в test009.pl, строка 14, строка 2231.
Я переустанавливал Mojolicious несколько раз, но каждый раз, когда запускал скрипт, я получал эту ошибку. Удаление строки просто заставляет скрипт ничего не делать. Он не печатает ни сообщение «Сбой при рукопожатии», ни какое-либо другое сообщение. Даже "Готово!" сообщение.
Похоже, что он просто останавливается сразу после вызова websocket()
...
Сейчас я в растерянности. Я понятия не имею, почему он больше не работает. Ничто не изменилось в моей среде Perl на моей локальной машине ...
Вот еще немного информации о моей локальной машине
- Windows 7 Pro 64bit SP1
- ActivePerl 5.16.2
- Веселый 6,64
Может кто-нибудь предложить несколько советов о том, что произошло? Или желательно, как заставить его работать снова?