我正在开发一个短信类型的应用程序。
消息仅在方向上传达((1)服务器 - >(n)客户端)
一种选择是每x秒询问一次服务器"新消息?"。这个选项不值得我,因为每个设备每x秒创建一个HTTP连接是非常昂贵的。例如,10 000个设备每5个seg创建一个新连接。此选项就像系统现在正在运行。
选项二是我要实现的,但我不知道它是如何实现的(Java-PHP)。
基于推送技术的想法如下:
保持从客户端到服务器的连接不断打开。该连接永远不会传输任何数据。
当服务器想要向客户端发送消息时,强制关闭连续连接。
然后客户端立即收到连接已关闭的事件。在这种情况下,关闭连接的事件意味着"新消息",因此客户端将打开POST连接以获取数据。
如何持续保持Java和PHP之间的开放连接,以及服务器是否能够立即关闭它?
这是java和PHP之间POST连接的工作代码,试试是否可以从这段代码中无限期地打开连接。
腓:
<?php
if (isset($_POST['myId']))
{ $in = $_POST['myId'];
//(...)
echo $myResponse;
}
?>
爪哇:
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);
答案 0 :(得分:1)
WebSocket应该是最佳解决方案。即使对于PHP和Java,您也可以找到许多不同语言的库。 WebSocket允许您创建持久的双向连接。因此,您可以在没有任何客户端请求的情况下将消息从服务器推送到客户端。