通过长连接实现与POST(HTTP)的推送技术连接
Implementing push technology connection with POST (HTTP) through persistent connection
我正在开发一个短信类型的应用程序。
消息仅在 ((1)Server -> (n)Client) 方向进行通信
- 服务器:PHP (LAMP)
- 客户:Android (Java)
一个选项是每 x 秒请求一次服务器 "new messages?"。这个选项不值得我因为每 x 秒为每个设备创建一个 HTTP 连接是非常昂贵的。例如,10 000 个设备每 5 段创建一个新连接。这个选项就像系统现在正在运行。
方案二是我想实现,但是不知道怎么实现(Java-PHP).
思路如下,基于推送技术:
保持从客户端到服务器的连接持续打开。该连接永远不会传输任何数据。
当服务器要向客户端发送消息时,强制关闭连续连接。
然后客户端立即收到连接已关闭的事件。在这种情况下关闭连接事件意味着 "new messages",因此客户端将打开 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 允许您创建持久的双向连接。因此,您可以在没有任何客户端请求的情况下将消息从服务器推送到客户端。
我正在开发一个短信类型的应用程序。
消息仅在 ((1)Server -> (n)Client) 方向进行通信
- 服务器:PHP (LAMP)
- 客户:Android (Java)
一个选项是每 x 秒请求一次服务器 "new messages?"。这个选项不值得我因为每 x 秒为每个设备创建一个 HTTP 连接是非常昂贵的。例如,10 000 个设备每 5 段创建一个新连接。这个选项就像系统现在正在运行。
方案二是我想实现,但是不知道怎么实现(Java-PHP).
思路如下,基于推送技术:
保持从客户端到服务器的连接持续打开。该连接永远不会传输任何数据。
当服务器要向客户端发送消息时,强制关闭连续连接。
然后客户端立即收到连接已关闭的事件。在这种情况下关闭连接事件意味着 "new messages",因此客户端将打开 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 允许您创建持久的双向连接。因此,您可以在没有任何客户端请求的情况下将消息从服务器推送到客户端。