in reply to Re^2: Net::Async::WebSocket::Server in a separate main loop
in thread Net::Async::WebSocket::Server in a separate main loop

Will you, please, if you'll come to solution with threads, post it here too?

P.S.: I was trying to figure out about the same scheme - I'm already have CGI processed by Mojolicious server, which take HTTP requests, send them through RabbitMQ to backend, listening for answer. But with websocket connections server needs to listen for messages coming through RabbitMQ from backend to send them to websocket, and it's without request from user. So I need Mojolicious to read RabbitMQ queue in a Mojo::IOLoop event loop system while serving CGI and websocket requests, and for now there are two good queue readers - AnyEvent::RabbitMQ (nonblocking, based on other than Mojolicious AnyEvent loop system) and Net::AMQP::RabbitMQ (blocking), so none of them fit to Mojolicious system. Solution not found so far.

  • Comment on Re^3: Net::Async::WebSocket::Server in a separate main loop

Replies are listed 'Best First'.
Re^4: Net::Async::WebSocket::Server in a separate main loop
by NERDVANA (Priest) on Jan 13, 2023 at 17:50 UTC
    If you tell AnyEvent and Mojo to use the same event library (like EV) then they are compatible. Make sure you have libev installed and that Mojo::Reactor::EV works. Maybe set MOJO_REACTOR to convince it to work: BEGIN { $ENV{MOJO_REACTOR} = 'Mojo::Reactor::EV'; }

    Also, I see Mojo::RabbitMQ::Client. No experience with it, but you might try that first.

      Thank you for this short and clear answer! I'll give it a try.

      As for Mojo::RabbitMQ::Client, after I read kraih (one of Mojolicious creator) comments in github issues for this project, I'm kind of stopped looking at it.