接口不断开的情况下,实时返回结果?

发布于 2022-09-13 01:18:05 字数 404 浏览 26 评论 0

需求是这样的:

前端去发起请求,后端生成10w条记录,想要实时得到生成的结果,只要数量。
比如:生成了10w条,9w是成功的,1w是失败的。目前想要这个结果是实时同步的,类似以上传文件的进度那种,能得到

有什么比较方便的实现方案?

目前我想到的:

  1. 建立一个websocket连接
  2. 轮询请求

第一种方案的话,确实不用考虑太多,就是如果专门为这一个接口(功能),使用ws,感觉有点大材小用了

第二种是之前常用的方案,就是有点low。

想请教一个小伙伴们有没有其他比较便捷的方案。非常感谢!!!


标题描述的可能有问题,大概意思,大家应该能理解


试了一下使用EventSource 由后端推送消息,确实可以,基本能满足需求,也不用轮训

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

涙—继续流 2022-09-20 01:18:05

我记得有个协议是后端向前端推数据,类似ws,https://www.runoob.com/html/h...

自找没趣 2022-09-20 01:18:05

有一种上古时期的技术,客户端请求,服务端需要执行一个耗时的操作,然后就把请求hang住,做完操作再响应。这样做的优劣还是比较明显的

websocket和轮训都各有优劣,没必要太纠结,用起来你就知道哪些缺点无法容忍,哪个方案最能满足要求

单身情人 2022-09-20 01:18:05

还可以考虑: chunked transfer encoding
如果后端http接口支持且客户端也能处理好数据流,客户端实现可以看下这个gist

背叛残局 2022-09-20 01:18:05

就一个接口,轮训简单方便

我要还你自由 2022-09-20 01:18:05

没理解错的话题主要的只是实时生成结果的数量,而不是生成的具体的数据, { success: 1, false: 1},把请求hang住无法得到实时的结果,采用chunked transfer 是为了传输大文件的一种方案,轮询应该是最简单的了

北城挽邺 2022-09-20 01:18:05

我专门做了一个视频教这个 肉山小课堂-使用 Express 开发 Node.js 服务器,实现流式输出

文字版教程:用 express.js 实现流式输出 HTTP 响应

简单来说:

  1. 服务器端持续性输出内容
  2. 前端使用 onDownloadProgress 得到输出的内容,并实时输出到前端
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文