首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过持久连接与POST (HTTP)实现推送技术连接

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

Stack Overflow用户
提问于 2015-02-20 15:16:30
回答 1查看 174关注 0票数 0

我正在开发一个文本信息类型的应用程序。

消息只按方向传送((1)服务器-> (N)客户端)

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

一种选择是每x秒请求服务器“新消息?”。这个选项不值得我使用,因为每隔x秒为每个设备创建一个HTTP连接非常昂贵。例如,每5个seg就有10 000个设备创建新连接。这个选项就像系统现在起作用一样。

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

基于push技术的想法如下:

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

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

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

如何能够持续地维护Java和PHP之间的开放连接,以及服务器能够立即关闭它?

这是java和PHP之间POST连接的工作代码,可以尝试从这个代码中无限期地打开连接。

Php:

代码语言:javascript
复制
<?php    
    if (isset($_POST['myId']))
    {       $in = $_POST['myId'];               
            //(...)             
            echo $myResponse;               
    }        
?>

爪哇:

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-20 15:44:16

在您的情况下,WebSocket应该是最好的解决方案。您可以为不同的语言找到许多库,即使是PHP和Java。WebSocket允许您创建持久的双向连接。因此,您可以将消息从服务器推送到客户端,而不需要任何客户端请求。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28632278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档