首页 > 解决方案 > 数据处理完成后Nodejs响应API请求

问题描述

在我当前的项目中,我的 nodeJs/express 将通过路由接收 HTTP 请求。

收到后,节点将使用 NightmareJS 执行网络抓取,然后执行进一步处理数据的 python 脚本。

最后,它会将这些数据更新到 MongoDB 中。

一切大约需要5分钟。

我想要实现的是让我的前端以某种方式收到请求已通过的确认。但是当上述过程完成并更新数据库时也会收到更新。

我已经研究过使用长轮询或 socket.io。但是,我不知道应该使用哪个或如何使用。还是应该改用rabbitMQ?将完成的响应放入队列中,同时我的前端不断查询该队列。

标签: node.jsreactjssocket.iorabbitmq

解决方案


  1. 长轮询和 socket.io 类似,socket.io 如果不支持 WS 则有长轮询回退

  2. rabbitMQ 完全不同,你不能在浏览器中使用 rabbitMQ 协议,所以你需要一个客户端应用程序,而不是 web

  3. socket.io 非常好,并且在 express 上运行良好,还有其他选项,SSE(服务器发送事件),firebase。你需要在选择之前感受它们,如果你遵循他们的官方指南,它们并不难

4.我的一些开源可能会有所帮助

https://github.com/postor/sse-notify-suite

https://github.com/postor/node-realtime-db

  1. 每种解决方案的好处

    • ajax + 服务器缓存:简单
    • 长拉:低延迟
    • SSE:低延迟,基于事件
    • socket.io:低延迟,基于事件,高吞吐量,双向,长拉回落

推荐阅读