繁体   English   中英

通过持久连接实现与POST(HTTP)的推送技术连接

[英]Implementing push technology connection with POST (HTTP) through persistent connection

我正在开发短信类型的应用程序。

消息仅在((1)Server->(n)Client)方向上传递

  • 伺服器:PHP(LAMP)
  • 客户端:Android(Java)

一种选择是每隔x秒向服务器请求“新消息?”。 这个选项不值得我这样做,因为每x秒为每个设备创建一个HTTP连接非常昂贵。 例如,每5个段产生10,000个设备创建新连接。 此选项就像系统现在正在运行。

选项二是我想实现,但是我不知道如何在(Java-PHP)中实现。

基于推送技术的想法如下:

保持从客户端到服务器的连接不断打开。 该连接将永远不会传输任何数据。

当服务器要向客户端发送消息时,强制关闭连续连接。

然后,客户端立即收到连接已关闭的事件。 在这种情况下,关闭连接的事件意味着“新消息”,因此客户端将打开POST连接以获取数据。

如何才能持续保持Java和PHP之间的开放连接以及服务器是否能够立即关闭它?

这是用于Java和PHP之间的POST连接的工作代码,以尝试从此代码中无限期地打开连接。

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

WebSocket应该是您的最佳解决方案。 您可以找到许多针对不同语言的库,甚至适用于PHP和Java。 WebSocket允许您创建持久的双向连接。 因此,您可以将消息从服​​务器推送到客户端,而无需任何客户端请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM