0

I am developing a text message type app.

The messages are communicated only in direction ((1)Server -> (n)Client)

  • Server: PHP (LAMP)
  • Clients: Android (Java)

One option is to ask to server every x seconds "new messages?". This option is not worth me because creating a HTTP connection every x seconds for each device is very expensive. For example 10 000 devices creating new connection every 5 seg. This option is like the system is working now.

Option two is that I want to implement, but I don't know how do it in (Java-PHP).

The idea is the following, based on push technology:

Maintain a connection from the client to the server open continuously. That connection will never transport any data.

When the server wants to send a message to a client, force close of continuous connection.

Then the client instantly receives the event that the connection has been closed. In this case the event of closed connection means "new messages", so the client will open POST connection to get data.

How can maintain an open connection between Java and PHP continuously and that the server has the ability to close it instantly?

This is working code for POST connection between java and PHP, to try if from this code is possible open connection indefinitely.

Php:

<?php    
    if (isset($_POST['myId']))
    {       $in = $_POST['myId'];               
            //(...)             
            echo $myResponse;               
    }        
?>

Java:

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(URL);                      

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair(key,content));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

HttpResponse response = httpclient.execute(httppost);
user3782779
  • 1,669
  • 3
  • 22
  • 36
  • 2
    What you are describing is called "Long Polling" and it has been asked and answered here: http://stackoverflow.com/questions/333664/how-to-implement-basic-long-polling – STT LCU Feb 20 '15 at 15:19

1 Answers1

1

WebSocket should be the best solution in your case. You can find many libraries for different languages even for PHP and Java. WebSocket allows you to create persistent bi-directional connection. So you can push a message from a server to the client without any client-side request.

Peky
  • 449
  • 2
  • 8