我正在开发一个文本信息类型的应用程序。
消息只按方向传送((1)服务器-> (N)客户端)
一种选择是每x秒请求服务器“新消息?”。这个选项不值得我使用,因为每隔x秒为每个设备创建一个HTTP连接非常昂贵。例如,每5个seg就有10 000个设备创建新连接。这个选项就像系统现在起作用一样。
选项二是我想要实现,但我不知道如何在(Java)中实现。
基于push技术的想法如下:
保持从客户端到服务器的连接连续打开。该连接将永远不会传输任何数据。
当服务器想要向客户端发送消息时,强制关闭连续连接。
然后,客户端立即收到连接已关闭的事件。在这种情况下,关闭连接的事件意味着“新消息”,因此客户端将打开POST连接以获取数据。
如何能够持续地维护Java和PHP之间的开放连接,以及服务器能够立即关闭它?
这是java和PHP之间POST连接的工作代码,可以尝试从这个代码中无限期地打开连接。
Php:
<?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);发布于 2015-02-20 15:44:16
在您的情况下,WebSocket应该是最好的解决方案。您可以为不同的语言找到许多库,即使是PHP和Java。WebSocket允许您创建持久的双向连接。因此,您可以将消息从服务器推送到客户端,而不需要任何客户端请求。
https://stackoverflow.com/questions/28632278
复制相似问题