Take a look at Mojolicious:: Plugin::WebTail, IIRC.
On Mar 24, 2016 1:37 PM, "Pavel Serikov" <[email protected]> wrote:
> I want to output my log via websocket using File::Tail.
>
> Below is my code:
>
> use Mojolicious::Lite;
> use Mojo::EventEmitter;
> use File::Tail;
>
> helper events => sub { state $events = Mojo::EventEmitter->new };
>
> get '/' => 'log';
>
> websocket '/ws' => sub {
> my $c = shift;
> app->log->info(sprintf 'Client connected: %s', $c->tx);
> $c->inactivity_timeout(3600);
> my $file = File::Tail->new(name => '/home/pavel/test.txt', maxinterval
> => 1, adjustafter => 7);
> while (defined(my $line=$file->read)) {
> $c->send({json => $line});
> }
> };
>
> app->start;
>
> __DATA__
>
> @@ log.html.ep
> <div id="log"></div>
> <script>
> var ws = new WebSocket('<%= url_for('ws')->to_abs %>');
> ws.onmessage = function (e) {
> document.getElementById('log').innerHTML += '<p>' + e.data + '</p>';
> };
> function sendChat(input) { ws.send(input.value); input.value = '' }
> </script>
>
> When I do
>
> *echo "test" >> /home/pavel/test.txt*
>
> Nothing happened, "test" message isn't showing on webpage. Moreover I
> can't refresh the page. I don't know why but I think that it's because of
> while (defined(my $line=$file->read)) { act like an infinite loop and
> can't properly interact with non-blocking mojolicious nature.
>
> How to make app working?
>
> --
> You received this message because you are subscribed to the Google Groups
> "Mojolicious" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/mojolicious.
> For more options, visit https://groups.google.com/d/optout.
>
--
You received this message because you are subscribed to the Google Groups
"Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.