What’s the best way to auto update the contents of a page after a regular time interval?

综合编程 2017-12-28

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.

Problem courtesy of: Peeyush

Solution

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.

Solution courtesy of: jfriend00

Discussion

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).

Discussion courtesy of: TiansHUo

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.

Discussion courtesy of: Timothy Strimple

This recipe can be found in it's original form on Stack Over Flow
.

Node.js Recipes

责编内容by:Node.js Recipes (源链)。感谢您的支持!

您可能感兴趣的

Namespaces in node.js with require I am playing around and learning about vows with a personal project. This is a small client ...
Sending an array from websocket to clients I'm having an issue sending an array from the backend js to the client side. I've tried the follow...
ReactNative环境搭建问题小札 直接进入正题... ----------win7系统 + android studio工具 按照reactnative的官方介绍 搭建开发环境 - React Native 中文网 ,...
How to easily update Node.js (works on all platfor... Updating software can sometimes be as simple as writing a command and hitting enter. Unfortunatel...
基于MySQL + Node.js + Leaflet的离线地图展示,支持百度、谷歌、高德、腾讯地图... 1. 基本说明 本项目实现了离线展示百度、谷歌、高德、腾讯地图。主要功能如下: 实现了地图瓦片图下载、存储。目前支持存储至 MySQL Node.js 服务调用MySQL中...