最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

将加载状态发送回客户端

IT培训 admin 4浏览 0评论

将加载状态发送回客户端

我正在构建一个简单的Web应用程序,它将文件作为输入,运行一些命令行操作,然后返回一个新文件(它是一个在线转换器)。整个过程需要1-2分钟,因为有8或9个命令行操作,有些需要花费更多时间。

我正试图找出一种方法将转换状态实时发送给客户端。

目前我的代码如下所示:

app.post('/convert/', function(req, res) {
   cmd.run(/* operation 1 */);
   cmd.run(/* operation 2 */);
   ...
   cmd.run(/* operation 7 */);
   cmd.run(/* operation 8 */);
   cmd.run(/* operation 9 */);
});

我想知道当一个命令行命令执行完毕而没有任何需要刷新时,是否有办法将某些内容发送回客户端。最终目标是拥有一个干净的装载栏。我知道解决方案可能在于Ajax,但在这一点上,我太初衷了解我应该做什么。

我试过像这样的东西

res.write('step 1 done');

res.send('step 1 done');

但它会停止执行脚本的其余部分并在浏览器中加载另一个页面。我还想知道如何在客户端的浏览器中处理这个响应。

谢谢!

回答如下:

您要做的是向单个请求发送多个响应。不幸的是,HTTP本身并不像那样。你现在正在使用HTTP,你将无法实现这一目标。

一种可行的方法是在客户端和服务器之间创建WebSocket。 WebSocket是根据HTTP协议创建的协议,如上所述

WebSockets是一种先进的技术,可以在用户的​​浏览器和服务器之间打开交互式通信会话。使用此API,您可以将消息发送到服务器并接收事件驱动的响应,而无需轮询服务器以进行回复。

我建议阅读Mozilla Developer Network教程,或者使用socket.io。 Here's是一个如何使用express和socketIO创建Node应用程序的教程

将加载状态发送回客户端

我正在构建一个简单的Web应用程序,它将文件作为输入,运行一些命令行操作,然后返回一个新文件(它是一个在线转换器)。整个过程需要1-2分钟,因为有8或9个命令行操作,有些需要花费更多时间。

我正试图找出一种方法将转换状态实时发送给客户端。

目前我的代码如下所示:

app.post('/convert/', function(req, res) {
   cmd.run(/* operation 1 */);
   cmd.run(/* operation 2 */);
   ...
   cmd.run(/* operation 7 */);
   cmd.run(/* operation 8 */);
   cmd.run(/* operation 9 */);
});

我想知道当一个命令行命令执行完毕而没有任何需要刷新时,是否有办法将某些内容发送回客户端。最终目标是拥有一个干净的装载栏。我知道解决方案可能在于Ajax,但在这一点上,我太初衷了解我应该做什么。

我试过像这样的东西

res.write('step 1 done');

res.send('step 1 done');

但它会停止执行脚本的其余部分并在浏览器中加载另一个页面。我还想知道如何在客户端的浏览器中处理这个响应。

谢谢!

回答如下:

您要做的是向单个请求发送多个响应。不幸的是,HTTP本身并不像那样。你现在正在使用HTTP,你将无法实现这一目标。

一种可行的方法是在客户端和服务器之间创建WebSocket。 WebSocket是根据HTTP协议创建的协议,如上所述

WebSockets是一种先进的技术,可以在用户的​​浏览器和服务器之间打开交互式通信会话。使用此API,您可以将消息发送到服务器并接收事件驱动的响应,而无需轮询服务器以进行回复。

我建议阅读Mozilla Developer Network教程,或者使用socket.io。 Here's是一个如何使用express和socketIO创建Node应用程序的教程

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论