Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 3 years ago.
Improve this question
So I want to make a website which visualize in real time some simulations which take some time to compute and I would like to know the easiest way to do it.
For now, the javascript front-end get the final result in once from the flask api and show it to the user. I would like the backend to send the result of the simulation in real-time, with batch of data at time intervals while it still computes, and the frontend to display the results in real time without having to re-load the page each time. How could I do that easily ?
Thanks
There are two common methods for doing this:
Web Sockets
Server-Sent Events (SSE)
If the frontend of your application needs to speak to the backend very often, then it would be best to open up a web socket for this channel of communication. Here is a list of popular frameworks for commonly used languages, including Python: https://github.com/facundofarias/awesome-websockets
If the frontend of your application just needs to listen for updates, then it may be better to use open up an event stream with SSE. Note that this can be done nowadays in most browsers in plain JavaScript at the frontend, but the backend may be a little more involved. Since you're using Flask, you might want to take a look at Flask-SSE.
Related
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
im working on a project where i have to create a gui for. The page that i'm working on has a form for user input that asks for a string. i want to take that input and send it to a python script that I have created for processing. The python script will then return a string of words to the javascript so that i can display it to the user in the webpage. Is there any way I can do so?
note: i am not an expert in programming hence please cut me some slack. it would be great if i could get a few examples as well.
You probably want to create and expose an HTTP endpoint using a Python web framework; the easiest choice would be Flask
This would require you to create a route/action view to handle POST requests using the Python script you created. You can then consume that HTTP endpoint using AJAX.
Another option would be to leverage the "serverless" infrastructure that Amazon Web Services provides; that way you could create an HTTP endpoint using Amazon API Gateway, and have that endpoint call an Amazon Lambda Python function, which would run your Python script and return the results. The advantage of this method is that is incredibly cheap and relatively easy to set up, especially if you only need to call that one Python script. Also, with this set up you wouldn't have to spin or maintain any web server yourself, since your Python script would be running directly on Amazon's servers.
Best of luck.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
I have been searching across the Web to find a solution to this:
Basically what I want to setup is a way to have an HTML page on a live production site to kept updated. This is because I have setup a SilverStripe Application as part of a graphics system (green chroma key) that runs through normal HTML.
AJAX load doesn't seem to be an option here since the load would be every 1 second or half a second to make sure the page is live.
I looked into web socket quite vaguely but the whole concept of integrating it with my project confused me entirely.
Anyone got any ideas of what could be done?
To do this you'll need a combination of:
AJAX, you'll need to never do a full page load after the initial Web 1.0 request.
Session history management, you'll need this in order to not break the browser navigation (e.g. back/forward buttons).
Web Sockets, you'll need this so when new content arrives on the server it is received by the client without first having to poll the server.
Web sockets will be the greatest challenge. I listed them in the order in which you should approach the project, in three phases.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I tried creating a chat application in Php and i used the below logic.
1.Get input from user-1 and insert it into the table.
2.Run an ajax function every 5 seconds to look for new entries in the table and display to user-2.
3.vice-versa.
This procedure is really too very slow and the browser hangs often.
How does the real-time chat application actually works ? Can the database trigger an event automatically in the front-end so that we need not hit the database every 5 seconds? If yes, how it is done?
Thanks.
That strategy is called polling and it served us good in the early 2000s, but it has done its time.
A better enhancement is long-polling. We request a webpage, but the server doesn't immediately respond but waits until there's new information available. When the clients receives the new information, it immediately sends a new request and so forth.
Now in 2015, we have HTML5 Websockets and HTML5 SSE (Server Sent Events), that allows both the client and the server to send data whenever data (on either side) is available.
You might consider using node.js (javascript) or Ratchet (PHP) on your server.
Or just long polling, like facebook...
You can use Websockets, they are supported natively in modern browsers.
https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API
And use a PHP library to use them server side : http://socketo.me
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I am creating a PHP application, where I want one user make a database entry. It should be reflected to all the users whoever have this app open on their browser will get instant notification that some data has been updated on the database or with whatever data has been inserted.
Is there any way I can get real time notification of data inserted or updated? On all the opened browser without any delay.
We use AJAX for now. But it seems like our application is now working slow due to continues request. Any other way? Which is free.
Thank you!
Take a look at Pusher (https://pusher.com/). It does what you want to achieve and it works like a charm.
I don't know what do you use on your server side but even if it isn't Laravel, take a look at Jeffrey's Laracast about implementing real time notifications in Laravel (PHP). https://laracasts.com/lessons/pusher-awesomeness
Have a fun! When I did it, my app became extremely sexy. Real time notifications, DOM manipulations etc.
You can use web sockets. One existing library example for PHP is Ratchet.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I'm using Django and JQuery. I basically want to refresh team's page when the game starts (a game is started manually so the exact time is uknown). So I send an ajax request to the server asking whether the game started, but I have to do it continiously, so I'm not sure what's better:
1. Have a javascript while loop that keeps sending a request
2. Have a while loop on the server side that waits to respond until the game starts.
Or maybe there is some other better way?
Thanks!
Approach 1 which you specify is called polling and which will generate multiple calls to server so it is not recommended.
Approach 2 is not feasible since you will have time out.
Right way(efficiently) to do this type of thing is via WebSockets or some kind of Push Notification from server. few libraries are
http://socket.io/
https://github.com/SignalR/SignalR/wiki/Faq
If this had helped you don't forgot to mark it as answer :)
Your server knows when the game will start, like 5pm? Tell the browser's JavaScript to start polling at 4:59:40
Polling is simplest option since it will work with plain Django system.
There exists several other techniques to keep connection open and send messages to client (browser), like websockets or server sent events (sse), but those require additional components in infrastructure than just Django.
And you can't keep server waiting, browsers and frontend webservers usually do have time limits to detect dead connections so your connection would be terminated before game starts.