问题如下,前端会调用后台接口进行调用扫描仪,扫描仪每过一张纸都会执行一次回调,我想在扫描仪过纸回调后,将图片实时返回给前端
以下是模拟代码
@GetMapping("/flush")
public void flush(HttpServletResponse response) throws Exception {
response.setHeader("Transfer-Encoding","chunked");
//调用扫描仪,进行扫描
scan.doScan(base64->{
//扫描仪过纸回调,需要把图片实时返回给前端,避免前端阻塞过久
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write((i+"\n").getBytes());
outputStream.flush();
})
}
问题来了。前端如何获取后台每次flush的数据。尝试了很久,除非接口方法执行完才会回调,这并不符合我的需要,求一个原始js实现方案
可以了解一下WebSocket协议,建立连接后,服务端可以主动给前端发数据,前端只需要监听服务端发来的数据即可,避免前端不断轮训调用后端接口和等待。
最简单的方式,改变http 的mediatype使用stream响应即可,reactive实现的webflux这种就可以做到
如有帮助,请采纳,十分感谢!