语境
- 我有一个应用程序可以对 Ruby 中的文本进行耗时的处理。
- 当用户提交文本时,会派生一个后台进程来处理该文本。
- 这个过程不断输出文本的新部分,因为它们已被处理。
- 同时,用户被重定向到将输出处理后的文本的页面。
我的问题是:给定 PID,客户端的 Javascript 如何与服务器上运行的进程通信?那可能吗?我是否需要将每个后台进程包装在其自己的 servlet 中,该 servlet 在其自己的端口上运行?
语境
我的问题是:给定 PID,客户端的 Javascript 如何与服务器上运行的进程通信?那可能吗?我是否需要将每个后台进程包装在其自己的 servlet 中,该 servlet 在其自己的端口上运行?
它无法访问进程空间。您需要一个 HTTP 接口来执行此操作。您可以使用长轮询来执行此操作。服务器可以定期输出文本,客户端脚本可以长时间轮询它。
在此处查看长轮询示例: 如何实现基本的“长轮询”?
考虑使用 websocket。在我的 Zend 应用程序中,我编写了一个将数据包发送到 JS 的代理脚本。另一种方法是让 setTimeout 每隔 x 秒询问一次 http 服务器,如果进程已经完成。
这是我最终使用的策略:
有什么想法吗?