it worked ))

Thank you very much!


пятница, 13 сентября 2019 г., 12:46:54 UTC+7 пользователь Stefan Adams 
написал:
>
> Try an action name other than `tap`.  tap() is a method in Mojo::Base 
> <https://mojolicious.org/perldoc/Mojo/Base#tap> which just about every 
> class in Mojolicious inherits from.
>
> In the Mojolicious::Lite app, you do not have a subroutine action named 
> `tap` -- you just have a callback.  In the full Mojolicious app, you have a 
> subroutine action named `tap`.  Specifically, these 
> <https://mojolicious.org/perldoc/Mojolicious/Routes#hidden> keywords are 
> hidden from the router.
>
> On Fri, Sep 13, 2019 at 12:39 AM VadimN <[email protected] 
> <javascript:>> wrote:
>
>> Hi,
>>
>> Using Websocket technology to periodically send new rows to the page.
>>
>> Under lite version all works fine.
>>
>> Server log for getting page, establishing WS connection, sending 
>> occasional new row to the page:
>>
>> at http://127.0.0.1:3000
>> :44.91645] [4732] [debug] GET "/" (cd726066)
>> :44.91768] [4732] [debug] Routing to a callback
>> :45.10940] [4732] [debug] Rendering template "index.html.ep" from DATA 
>> section
>> :45.11445] [4732] [debug] Rendering template "menu.html.ep" from DATA 
>> section
>> :45.11736] [4732] [debug] Rendering template "datarows.html.ep" from 
>> DATA section
>> :45.16243] [4732] [debug] 200 OK (0.245983s, 4.065/s)
>> :46.35749] [4732] [debug] GET "/tap" (f0cc47e0)
>> :46.36461] [4732] [debug] Routing to a callback
>> :46.36624] [4732] [debug] 101 Switching Protocols (0.008739s, 114.430/s)
>> :46.36646] [4732] [debug] WS for table append opened
>> :58.41381] [4732] [debug] Rendering cached template "datarows.html.ep" 
>> from DATA section
>> :58.41454] [4732] [debug] html sent; new id = 231378
>>
>>
>> The problem occurred when switching from Mojolicious::Lite to the full 
>> version.
>>
>> Server log looks like this:
>>
>> at http://127.0.0.1:3000
>> :17.64413] [6264] [debug] GET "/" (5b7cd6b9)
>> :17.64681] [6264] [debug] Routing to controller 
>> "MyApp::Controller::FrontEnd" and action "index"
>> :17.83067] [6264] [debug] Rendering template "front_end/index.html.ep"
>> :17.83547] [6264] [debug] Rendering template "menu.html.ep"
>> :17.83944] [6264] [debug] Rendering template "datarows.html.ep"
>> :17.88862] [6264] [debug] Rendering template "layouts/default.html.ep"
>> :17.89673] [6264] [debug] 200 OK (0.252574s, 3.959/s)
>> :19.47888] [6264] [debug] GET "/tap" (2727832e)
>> :19.48026] [6264] [debug] Action "tap" is not allowed
>> :19.48132] [6264] [debug] Template "front_end/tap.html.ep" not found
>> :19.48225] [6264] [debug] Template "not_found.development.html.ep" not 
>> found
>> :19.48310] [6264] [debug] Template "not_found.html.ep" not found
>> :19.48413] [6264] [debug] Rendering template "mojo/debug.html.ep"
>> :19.53478] [6264] [debug] 404 Not Found (0.055844s, 17.907/s)
>>
>> In the Lite app theris function call
>>
>> websocket '/tap' => sub {
>>     my $c = shift;
>>
>>     #get some data from outside
>>     #...
>>
>>
>> # as the test showed, this is not necessary for lite app
>> #    $c->on(message => sub {
>> #    });
>>
>>     my $id = Mojo::IOLoop->recurring(3 => sub {
>>
>>         #check for the new data
>>         #...
>>      
>>         if (new data found) {
>>             ...
>>             my $html = $c->render_to_string('datarows');
>>             $c->send($html);
>>             $c->app->log->debug("html sent; new id = $max_id");
>>         }
>>     });
>>
>>     $c->on(finish => sub {
>>         Mojo::IOLoop->remove($id);
>>         $c->app->log->debug("WS for table append closed");
>>     });
>>
>>     $c->app->log->debug('WS for table append opened');
>> };
>>
>>
>> This is transforms to couple parts in full app code.
>> In startup function
>>
>>     $r->websocket('/tap')->to('front_end#tap');
>>
>> In the FrontEnd controller:
>>
>> sub tap {
>>     my $self = shift;
>>
>>     # get some data
>>     #...
>>
>>     my $id = Mojo::IOLoop->recurring(3 => sub {
>>         
>>         # check for data
>>
>>         # if found
>>         if (...) {
>>             ...
>>         #all the same
>> };
>>
>>
>> Why was he asking about a nonexistent template?
>>
>> -- 
>> 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] <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/mojolicious/d6b383e5-b1d4-4cd2-bf4f-ef2fc0e99e71%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/mojolicious/d6b383e5-b1d4-4cd2-bf4f-ef2fc0e99e71%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/mojolicious/4e82bb92-7993-4106-9f1b-176020d5e7c9%40googlegroups.com.

Reply via email to