接口不断开的情况下,实时返回结果?
需求是这样的:
前端去发起请求,后端生成10w条记录,想要实时得到生成的结果,只要数量。
比如:生成了10w条,9w是成功的,1w是失败的。目前想要这个结果是实时同步的,类似以上传文件的进度那种,能得到
有什么比较方便的实现方案?
目前我想到的:
- 建立一个websocket连接
- 轮询请求
第一种方案的话,确实不用考虑太多,就是如果专门为这一个接口(功能),使用ws,感觉有点大材小用了
第二种是之前常用的方案,就是有点low。
想请教一个小伙伴们有没有其他比较便捷的方案。非常感谢!!!
标题描述的可能有问题,大概意思,大家应该能理解
试了一下使用EventSource 由后端推送消息,确实可以,基本能满足需求,也不用轮训
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我记得有个协议是后端向前端推数据,类似ws,https://www.runoob.com/html/h...
有一种上古时期的技术,客户端请求,服务端需要执行一个耗时的操作,然后就把请求hang住,做完操作再响应。这样做的优劣还是比较明显的
websocket和轮训都各有优劣,没必要太纠结,用起来你就知道哪些缺点无法容忍,哪个方案最能满足要求
还可以考虑: chunked transfer encoding
如果后端http接口支持且客户端也能处理好数据流,客户端实现可以看下这个gist
就一个接口,轮训简单方便
没理解错的话题主要的只是实时生成结果的数量,而不是生成的具体的数据,
{ success: 1, false: 1}
,把请求hang住无法得到实时的结果,采用chunked transfer 是为了传输大文件的一种方案,轮询应该是最简单的了我专门做了一个视频教这个 肉山小课堂-使用 Express 开发 Node.js 服务器,实现流式输出
文字版教程:用 express.js 实现流式输出 HTTP 响应
简单来说:
onDownloadProgress
得到输出的内容,并实时输出到前端