A server is anything that provides service while a client is the one that receives the service. Based on a number of approaches and techniques, client-server communication can be classified into variety of classifications.
In this article, we are going to get in detail about the following techniques of Client-Server Communication.
– Simple HTTP Requests
– Ajax Polling
– Server Sent Events
– Websocket
– Comet
Simple HTTP Request

Client sends HTTP Request to server and server responds to the request.
<h1>Simple HTTP Request</h1>
<h2>
The server time is:
<?php echo date('Y-m-d H:i:s');?>
</h2>
Ajax Polling

– Client Sends an AJAX request in regular interval of time to the server.
– Polling can be short or long polling.
– In case of long polling, the server does not immediately respond with the requested information but waits until there is new information available.

<h1>Simple Ajax Polling</h1>
<h2>
The server time is:
<span id="server-time"></span>
</h2>
//include jQuery here
//send ajax request to server every 5 seconds
setInterval(function(){
poling();
},5000);
function polling(){
$.ajax({
url:'polling.php',
type:'get',
success:function(response){
if(response){
$("#server-time").html(response);
}
}
});
polling.php
<?php
echo date('Y-m-d H:i:s');
HTML5 Server Sent Events (SSE)

– Client does not need to request the server
– server automatically sends response to the client when there is new information available.
<h1>HTML5 Server Sent Events (SSE)</h1>
<h2>
The server time is:
<span id="server-time"></span>
</h2>
var source = new EventSource('sse.php');
source.onmessage = function(event){
document.getElementById('server-time').innerHTML = event.data;
}
see.php
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$time= date('Y-m-d H:i:s');
echo "data:($time)\n\n";
flush();
HTML5 Websockets
– The server and the client can now send each other messages when new data (on either side) is available.

Comet
Comet is a collection of techniques prior to HTML5 which use streaming and long-polling to achieve real time applications.
You can follow the following video for detailed implementation of above explained techniques:
