gpt4 book ai didi

java - 通过长连接实现与POST(HTTP)的推送技术连接

转载 作者:行者123 更新时间:2023-12-01 11:53:08 35 4
gpt4 key购买 nike

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

消息仅在方向上通信((1)服务器 -> (n)客户端)

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

一种选择是每隔 x 秒向服务器询问“新消息?”。这个选项对我来说不值得,因为每 x 秒为每个设备创建一个 HTTP 连接非常昂贵。例如,每 5 seg 有 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 允许您创建持久的双向连接。因此,您可以将消息从服​​务器推送到客户端,而无需任何客户端请求。

关于java - 通过长连接实现与POST(HTTP)的推送技术连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28632278/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com