【发布时间】:2012-01-18 13:40:43
【问题描述】:
首先,我对很多东西都是全新的,所以我欢迎任何意见,包括建议、现有项目、现有模型等。
我目前的问题是:
后台服务维护一个任务队列。后台服务是用C++或者python写的。
当客户端在浏览器中单击“创建任务”按钮时,信息将被发送到 Web 服务器,并且 Web 服务器脚本(用 PHP 编写)将发起对后台服务的 RPC 调用以将任务附加到内部队列。
客户端浏览器会发起一个AJAX请求等待任务完成。 AJAX 请求将一直保持到任务完成(或失败)或客户端取消请求为止。
因此,我需要一种低成本的方式来获取在后台服务进程上运行的任务进度。
我可以想到两种方法:
后台服务可以主动通知服务器 AJAX 脚本进度。这是低成本,但我实际上不知道该怎么做。有没有 RPC 框架提供这样的异步回调?目前我决定使用的 RPC 框架是 Thrift,因为它支持多语言。
服务器端的 AJAX 脚本将每隔几秒进行一次 RPC 调用以获取当前进度,并在其间休眠。完成后,AJAX 脚本会返回,否则只会让客户端浏览器等待而不返回。这实际上更简单,但我不确定它的成本。请注意,这里的延迟对我来说不是问题,因为我认为客户可以再等待几秒钟。
有没有常见的方法/模型来处理这个问题?
感谢您的帮助。
【问题讨论】:
-
你看过 WebSockets 吗? websocket.org 或长轮询:stackoverflow.com/questions/333664/…
-
谢谢。只需通读两者。 websocket 太新了,大多数浏览器都不支持,所以长轮询将是要走的路。
标签: php c++ ajax client-server rpc