我有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);
}
答案 0 :(得分:0)
你对套接字是正确的,它们很容易使用,但是许多网络阻塞简单的TCP套接字并且只允许HTTP,有时只允许通过HTTP代理。
HTTP是可行的方式,但HTTP不允许服务器发起对话,它会强制您在请求响应模型中工作。
但是,有一些方法可以用来克服这个限制:
简单轮询:您只需定期轮询服务器,以了解您是否收到新消息。
长轮询:您轮询服务器但请求保持打开状态,直到服务器有话要说,这也称为“彗星”协议,那里有像jetty那样的实现。
websockets:html5的一个功能,顾名思义,它提供了一个真正的双向套接字。所有网络设置都不支持这一点。例如,某些代理会阻止它。
您应该对每种方法进行一些研究,并根据您的情况选择合适的方法。
祝你好运。