Reputation: 4828
I am using working on web app which had a DIV in which latest update about a topic is shown which is coming from some other website. So what i want is to update the DIV as soon as the data is really updated in back end database.
On the back-end I am using cron to fetch & store data in database.
A simple way of doing this is to use setInterval()
function and keep on fetching the data at a particular time interval but I think this would just cause unnecessary load on the server and just waste CPU cycles.
So what's the best way to implement this? can/should i use nodeJs for this?
-Thanks
P.S. I just want something like facebook uses to upddate it's news feed in the middle of page.
and i have no experience with nodeJs yet so honestly i don't even know that nodeJs is good for this or not.
Upvotes: 2
Views: 1788
Reputation: 8629
Try googling socket.io
/ now.js
, it will solve your problem easily by pushing to the client using websockets, and fallback gracefully to flash sockets. You do not have to port all your code to node.js, instead, use it alongside with your original code.
Also note that if the interval is originally something like 5 minutes, you'd be better off using setInterval ajax. Websockets is best for (near) realtime communication (with a small latency within seconds, eg. chat).
Upvotes: 0
Reputation: 23070
Node can definitely be useful for this, but it is not necessary as jfriend00 says. Take a look at socket.io for an example of "push" notifications from your server to the browser. Since you don't have any experience with node.js, it would depend on the application as to whether I would recommend it as the solution or not. If this is just a hobby project for educational purposes I would say go ahead, tinker away. If this is for a production system and you're not already using node.js in other capacities, I say stick with something simple like the setInterval method you mentioned in your question.
Upvotes: 0
Reputation: 708046
If the problem you're trying to solve is how to efficiently update your browser display without repeatedly polling the backend server, then you can use "long polling" in which you make a web server request with a long timeout and the request only returns when there is actually some new data or it eventually times out. You can read more by searching Google or SO for "javascript long polling". Here are a few of those references:
How do I implement basic "Long Polling"?
How to implement Server push / long polling / comet using PHP and Javascript
http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery
In modern browsers, you could also use web sockets where you client opens up a socket directly to the server and the server just sends you new data when there is new data.
In either case, you need a back-end server that can handle lots of simultaneous, but mostly idle connections.
Upvotes: 2