【问题标题】:Send request progress to client side via nodejs and express通过nodejs向客户端发送请求进度并表达
【发布时间】:2019-08-21 05:20:46
【问题描述】:

我在我的 express 应用中使用 this (contentful-export) 库,就像这样

const app = require('express');

...

app.get('/export', (req, rex, next) => {
  const contentfulExport = require('contentful-export');
  const options = {
     ...
  }
  contentfulExport(options).then((result) => {
     res.send(result);
  });
})

现在这确实有效,但是该方法需要一些时间并将状态/进度消息发送到节点控制台,但我也想让用户保持更新.. 有没有办法可以发送节点控制台进度给客户的消息??

这是我第一次使用 node / express 任何帮助将不胜感激,我不确定这是否已经有了答案,因为我不完全确定该怎么称呼它?

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    查看内容导出的文档我认为这是不可能的。这通常在 Node 中工作的方式是你有一个对象(在这种情况下为contentfulExport),你在这个对象上调用一个方法,并且同一个对象也是an EventEmitter。这样你就可以得到一个钩子来响应触发的事件。

    // pseudo code
    someLibrary.on('someEvent',  (event) => { /* do something */ })
    someLibrary.doLongRunningTask()
      .then(/* ... */)
    

    这没有为内容导出记录,所以我假设没有办法挂钩发送到控制台的日志消息。

    不过,您的问题还有另一个棘手的角度。在您共享的代码中,您包含一个端点 (/export)。如果您想显示更新或显示一些进度,您可能需要第二个端点来提供有关您的长期运行任务的进度的信息(尽管您无法通过 contentful-export 访问)。

    通常处理这种情况的方式是,您通过某个 HTTP 端点启动一个长时间运行的任务,然后使用另一个通过轮询或 Web 套接字连接提供信息的端点。

    很抱歉,我无法给出正确的解决方案,但由于内容导出的限制,我认为没有一种简洁/简单的方法可以显示导出数据的进度。

    希望对您有所帮助。 :)

    【讨论】:

    • 谢谢!我说你可能是对的!将研究其他一些解决方案
    • 乐于助人。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多