node.js - 数据处理完成后Nodejs响应API请求
问题描述
在我当前的项目中,我的 nodeJs/express 将通过路由接收 HTTP 请求。
收到后,节点将使用 NightmareJS 执行网络抓取,然后执行进一步处理数据的 python 脚本。
最后,它会将这些数据更新到 MongoDB 中。
一切大约需要5分钟。
我想要实现的是让我的前端以某种方式收到请求已通过的确认。但是当上述过程完成并更新数据库时也会收到更新。
我已经研究过使用长轮询或 socket.io。但是,我不知道应该使用哪个或如何使用。还是应该改用rabbitMQ?将完成的响应放入队列中,同时我的前端不断查询该队列。
解决方案
长轮询和 socket.io 类似,socket.io 如果不支持 WS 则有长轮询回退
rabbitMQ 完全不同,你不能在浏览器中使用 rabbitMQ 协议,所以你需要一个客户端应用程序,而不是 web
socket.io 非常好,并且在 express 上运行良好,还有其他选项,SSE(服务器发送事件),firebase。你需要在选择之前感受它们,如果你遵循他们的官方指南,它们并不难
4.我的一些开源可能会有所帮助
https://github.com/postor/sse-notify-suite
https://github.com/postor/node-realtime-db
每种解决方案的好处
- ajax + 服务器缓存:简单
- 长拉:低延迟
- SSE:低延迟,基于事件
- socket.io:低延迟,基于事件,高吞吐量,双向,长拉回落
推荐阅读
- python-3.x - 为什么这段代码没有返回任何东西?
- asp.net-core-mvc - Angular 6 和 asp.net mvc core 2.1 身份服务器 4“https://localhost:55350/api/account/user 的 Http 失败响应:401 OK”
- java - JavaFX:事件 OnMouseExited 工作不正确
- java - String replace() 在 Java 中返回额外的空间
- html - 使用 HTML 预加载 m3u8 视频
- python - 使用 Python 的 Requests 库执行 URL 重写的问题
- javascript - js点击的过渡持续时间
- python - 如何在字符串中搜索特定的单词序列?
- c - 矩阵的动态数组
- javascript - 如何从数组中提取最长的单词?JavaScript/JSON