Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re^6: real-time output from Mojolicious WebSockets?

by icefishyu (Initiate)
on Jan 11, 2016 at 09:25 UTC ( #1152459=note: print w/replies, xml ) Need Help??


in reply to Re^5: real-time output from Mojolicious WebSockets?
in thread real-time output from Mojolicious WebSockets?

actually i have same question,
There is long-time operation on server and I want update its progress on client-side.
In several points on server-side code I call $web_socket->send(...) and process it on client-side ws.onmessage = function (event) {...};
Server-side logic as below:
some_computation1();
$web_socket->send('computation1 end');
...
some_computation15();
$web_socket->send('computation15 end');
...
some_computation100();
$web_socket->send('computation100 end. All ok!');
Client-side as below
ws = new WebSocket(url);
ws.onmessage = function (event) {
$('#log_view').append('

' + event.data + '

');
};
ws.onopen = function (event) {
...
};
ws.onclose = function (event) {
...
};
Everything work fine, but not in realtime: all messages has received by client at one big bulk list and only after whole server-side script has finished.
in fact, i need every message show up after one step finished.
appreciate if any friends can help me.
  • Comment on Re^6: real-time output from Mojolicious WebSockets?

Replies are listed 'Best First'.
Re^7: real-time output from Mojolicious WebSockets?
by Corion (Pope) on Jan 11, 2016 at 09:37 UTC

    Have you made sure that there is no buffering going on between your script and the client? Maybe the websocket channel has gzip compression enabled which buffers?

    Have you written your progress output to a logfile in parallel to verify that your script arrives at the respective steps when you think it should?

    Your problem seems to be relatively common, but the only one with enough source code to maybe reproduce it (and a solution) was at Mojolicious websocket with server-side repeating events. So maybe you can either try that solution or work your code into something that we can run to try and reproduce your problem.

    Relevant keywords seem to be perl mojo websocket flush, but without seeing more of your code, it's hard to judge whether the solutions (or not) suggested fit your situation.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1152459]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (2)
As of 2021-07-30 01:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?