Asynchronous 一个客户端请求的多个服务器回复

Asynchronous 一个客户端请求的多个服务器回复,asynchronous,client-server,Asynchronous,Client Server,这可能是一个愚蠢的问题-标题可能需要改进。。。我认为我的要求非常简单:我想从客户机向服务器程序发送数据请求,服务器(而不是客户机)应该响应类似“接收到您的请求-处理它”的内容。然后,客户机执行其他工作。然后,当服务器获取数据时,它应该发送一条异步消息(弹出窗口?)说“我已经获取了您的数据;单击…(可能是一个URL)以获取数据”。我一直假设服务器可以用Java编写,客户端是html和JavaScript。我还没能想出一个干净的解决方案-非常感谢您的帮助。大部分工作都涉及到服务器的异步。要做到这一点

这可能是一个愚蠢的问题-标题可能需要改进。。。我认为我的要求非常简单:我想从客户机向服务器程序发送数据请求,服务器(而不是客户机)应该响应类似“接收到您的请求-处理它”的内容。然后,客户机执行其他工作。然后,当服务器获取数据时,它应该发送一条异步消息(弹出窗口?)说“我已经获取了您的数据;单击…(可能是一个URL)以获取数据”。我一直假设服务器可以用Java编写,客户端是html和JavaScript。我还没能想出一个干净的解决方案-非常感谢您的帮助。

大部分工作都涉及到服务器的异步。要做到这一点,你必须

  • 对启动作业的服务器进行ajax调用,并返回作业已启动的确认
  • 服务器上的一个页面,将返回用户是否完成了任何作业
  • 在客户端有一个ajax小部件,它每隔一段时间在服务器上ping一次该页面,以查看是否完成了任何作业。如果是这样,就弹出一个窗口

  • 除非您使用Flex数据服务,否则这是唯一的方法。

    您是否尝试在HTTP协议上执行此操作?听起来您在这里谈论的是一个web应用程序,但从这个问题上还不清楚。如果是这样的话,那么有多种技术可以使用AJAX来实现这一点,这些技术统称为“Comet”。具体取决于您要完成的任务,在客户端和服务器端都有许多不同的实现可能是合适的。

    对于纯java,我建议使用类似jgroups的实现(客户端+服务器都是java)
    对于html,您应该使用ajax——这里有一个每X秒检查一次的计时器,现在您可以使用另一种技术:。这些用于服务器->客户端通信,无需轮询或ajax风格的延迟响应。

    尝试使用“Websocket方法”,服务器端使用“SuperWebSocket”,客户端使用“Websocket 4net”。它非常适合我当前的项目。

    谢谢您的反馈!听起来这只是等待合适的技术出现的问题!最近我还听说HTML5解决了这个问题——评论?WebSocket是HTML5这个大捆绑包中非常新的一部分。