我正在开发短信类型的应用程序。
消息仅在((1)Server->(n)Client)方向上传递
伺服器:PHP(LAMP)
客户端:Android(Java)
一种选择是每隔x秒向服务器请求“新消息?”。这个选项不值得我这样做,因为每x秒为每个设备创建一个HTTP连接非常昂贵。例如,每5个段产生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服务器,可以通过Web浏览器访问它,以下载文件,最好使用套接字。谁能指出正确的方向,因为我只能找到相反的示例(使用Java客户端从http下载)。谢谢,汤姆 参考方案 如果不需要,不要重新发明轮子,嵌入Jetty可以做到这一点:http://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jet…
如何使用Java创建docx文件? - java我正在尝试使用Java创建.docx文件,但由于某些原因我无法打开该文件。错误来自“文件内容有问题”。有谁知道如何解决这个问题? 参考方案 尝试了多个库这是免费的。 http://www.docx4java.org/trac/docx4j还要检查aspose(不是免费的) http://www.aspose.com/categories/java-compo…
从Java中的Python脚本调用和接收输出? - java从Java执行Python脚本并接收该脚本的输出的最简单方法是什么?我一直在寻找不同的库,例如Jepp或Jython,但是大多数库都已过时。库的另一个问题是,如果我使用库,则需要能够轻松地在源代码中包含一个库(尽管我不需要为库本身提供源代码)。因此,最简单/最有效的方法是简单地执行诸如使用runtime.exec调用脚本之类的操作,然后以某种方式捕获打印输出…
如何使JVM启动更快? - javaThis question already has answers here: Closed 7 years ago. Possible Duplicate: How to speed up Java VM (JVM) startup time?我正在用Java(或可能是另一种基于JVM的语言)编写命令行实用程序。问题是JVM启动时间。例如,JVM的启动速度…
Java:正则表达式模式匹配器是否有大小限制? - java我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)