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

蜗居的小鸟
  • 15

需求是这样的:

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

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

目前我想到的:

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

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

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

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


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


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

回复
阅读 2.2k
6 个回答
✓ 已被采纳

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

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

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

马走日
  • 3
新手上路,请多包涵

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏