Servlet Push

HTTP Server Push

HTTP server push  is a mechanism for sending data from a web server to a web browser. HTTP server push can be achieved through several mechanisms. Http Server push also known as HTTP streaming.

Most web servers offer this feature by Non parsed Headers ("Server Push"). Another way of achieving server push is by using the special MIME type called multipart/x-mixed-replace


Server Pull and Push

Usually browser asks for a page or image or an object from the server and the server sends the response to the browser. This is called 'Pull' method the most common method in webserver technology. At times the server itself can send data to the browser. Its required sometimes that the server has to push the data to its clients. For example consider the cricket score card or email web clients. These kinds of data change consistently, so server has to push the content to client to synchronize the client with the server data.

Client side Refresh methods

In traditional websites the synch or data update is done using one of the below
  1. Refresh tag in the HTML metadata
  2. JavaScript countdown timer to reload the data

Advantages of server push

  1.  Reduced page refresh
  2.  Limited latency
  3. Quick updates

With server push, the socket connection between the client and the server remains open until the last portion of response is committed. This enables the server to send the updates quickly.

Disadvantages of server Push

  1.  Browser support
  2.  Keep alive connection overhead.

MIME type multipart/x-mixed-replace

Servlet push is achieved by using the MIME type multipart/x-mixed-replace.

From Wikipedia

The content type multipart/x-mixed-replace was developed as part of a technology to emulate server push and streaming over HTTP.

All parts of a mixed-replace message have the same semantic meaning. However, each part invalidates - "replaces" - the previous parts as soon as it is received completely. Clients should process the individual parts as soon as they arrive and should not wait for the whole message to finish.

Originally developed by Netscape,[5] it is still supported by Mozilla, Firefox, Chrome,[6] Safari, and Opera, but traditionally ignored by Microsoft. It is commonly used in IP cameras as the MIME type for MJPEG streams.[7]

Sample code.

Sample code is given below to explain how servlet push works. This code simply prints the current time on the output (browser) and updates the time every second.
package com.servlet;

import java.util.Calendar;

import javax.servlet.*;
import javax.servlet.http.*;

public class TimeServlet extends HttpServlet {

 private static final long serialVersionUID = 1L;

 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  ServletOutputStream out = response.getOutputStream(); // Binary data

  // Set the MIME type

  for (int i = 0; i < 10; i++) {
   // Start the response i
   out.println("Time :" + getTS());

   // End the response i


  out.println("clock is done!");

  // close the response

 private static String getTS() {
  Calendar cal = Calendar.getInstance();
  return cal.get(Calendar.MINUTE) + ":" + cal.get(Calendar.SECOND);

 private void sleep(int ms) {
  try {
  } catch (InterruptedException e) {


Post a Comment

Popular posts from this blog

Log4j multiple WAR files in single EAR configuration

Ubuntu / kubuntu - Laptop key board cursor jumping issue

Java NIO2 - Watching a directory for changes. FileWatcherService.