Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Server polling with JavaScript

Tags:

What are some good practices for polling a server with JavaScript for an application that needs to refresh data very rapidly? I'm using jQuery for front-end and Java Spring Framework for backend.

Example of refreshed data could be list of items that are getting updated very rapidly (every 1 second).

like image 822
newbie Avatar asked Aug 27 '10 10:08

newbie


People also ask

What is long polling in Javascript?

Long polling is the simplest way of having persistent connection with server, that doesn't use any specific protocol like WebSocket or Server Side Events. Being very easy to implement, it's also good enough in a lot of cases.

What is HTTP long polling?

HTTP Long Polling is a technique used to push information to a client as soon as possible on the server. As a result, the server does not have to wait for the client to send a request. In Long Polling, the server does not close the connection once it receives a request from the client.

What is AJAX polling?

Polling is a standard technique used by the vast majority of AJAX applications. The basic idea is that the client repeatedly polls (or requests) a server for data. The client makes a request and waits for the server to respond with data. If no data is available, an empty response is returned.


2 Answers

You may want to use jQuery's Ajax functions to poll the server every second or so. Then the server can respond with instructions to the browser in near real-time.

You can also consider long polling instead of the above, to reduce the latency without increasing the frequency of the polls.

Quoting Comet Daily: The Long-Polling Technique:

The long-polling Comet technique is a technique that optimizes traditional polling to reduce latency.

Traditional polling sends an XMLHttpRequest to the server in fixed intervals. For example, open a new XMLHttpRequest every 15 seconds, receive an immediate response, and close the connection.

Long-polling sends a request to the server, but a response is not returned to the client until one is available. As soon as the connection is closed, either due to a response being received by the client or if a request times out, a new connection is initiated. The result is a significant reduction in latency because the server usually has a connection established when it is ready to return information to return to the client.

In addition to the above, I also suggest that you check out the accepted answer to the following Stack Overflow post for a detailed description of the long polling technique:

  • How does facebook, gmail send the real time notification?
like image 187
Daniel Vassallo Avatar answered Nov 29 '22 08:11

Daniel Vassallo


I second Daniel's suggestion to use long-poll or push. Check out

  • CometD Bayeux Ajax Push

CometD is a scalable HTTP-based event routing bus that uses a Ajax Push technology pattern known as Comet. The term 'Comet' was coined by Alex Russell in his post Comet: Low Latency Data for the Browser.

They have a page explaining how to get that work with Spring:

  • http://cometd.org/documentation/cometd-java/server/services/integration-spring
like image 31
Gordon Avatar answered Nov 29 '22 08:11

Gordon