[英]Java EE, communication Web app and Desktop app
我有Java Server Faces Web应用程序,需要在网络计算机上的桌面应用程序中调用方法。 该机器将在特定机器上执行某些逻辑。 完成此操作后,它应调用Web应用程序上的方法来报告其状态。 两种方法都是void
的,但确实需要参数。
开发这个的最佳方法是什么? 我考虑过一些选择:
Web应用程序
class WebAppClient {
public void start(String x, List<String> y) {
// Call DesktopServer.start(x, y);
}
}
interface WebAppServer {
public void reportBack(String info);
}
DesktopApp
class DesktopClient
public void reportBack(String info) {
// Call WebAppServer.reportBack(info);
}
}
interface DesktopServer {
public void start(String x, List<String> y);
}
你是对的是套接字,它们很容易使用,但许多网络阻塞简单的TCP套接字并且只允许HTTP,有时只允许通过HTTP代理。
HTTP是可行的方法,但HTTP不允许服务器发起对话,它会强制您在请求响应模型中工作。
但是,有一些方法可用于克服此限制:
简单轮询:您只需定期轮询服务器以了解您是否收到新消息。
长轮询:你轮询服务器,但请求保持打开,直到服务器有话要说,这也称为“彗星”协议,那里有像jetty那样的实现。
websockets:html5的一个特性,顾名思义,它通过http提供真正的双向套接字。 所有网络设置都不支持这一点。一些代理会阻止它。
您应该对每种方法进行一些研究,并根据您的情况选择合适的方法。
祝好运。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.