Этот код, похоже, не работает, и я не знаю, как его отладить .. Я использую Mojolicious для отправки подписанных сообщений через websocket.
use Mojo::Redis;
#Controller
sub data_stream {
my $c = shift;
$c->inactivity_timeout(300);
my $redis = Mojo::Redis-new('redis://xxxxxxxx@localhost:6379/');
my $pubsub = $redis->pubsub;
my $cb = $pubsub->listen('data' => sub {
my ($pubsub, $msg) = @_;
$c->app->log->debug("WS: $msg");
$c->send({text => $msg});
});
$c->on(finish => sub {
$c->app->log->debug("WS CONNECTION CLOSED!");
$pubsub->unlisten('data' => $cb)
});
}
Подпрограмма выше называетсясо следующего роутера
$router->websocket('/data_stream')->to('grid#data_stream');