最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

将加载状态发送回客户端

运维笔记admin13浏览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应用程序的教程

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论