Springboot視頻接口報(bào)大量的ClientAbortException找不到原因的解決
瀏覽器有自己的緩沖策略,比如視頻接口吐出了100MB的視頻數(shù)據(jù),瀏覽器可不會(huì)全部拿走,而是按需去拿,
舉個(gè)例子,瀏覽器拿的視頻數(shù)據(jù)夠看半分鐘的,就停止讀取數(shù)據(jù)了,但是http連接并未斷開,因?yàn)檫@半分鐘看完還要再去讀取數(shù)據(jù)。
springboot視頻接口向響應(yīng)流寫入100MB數(shù)據(jù),并不是直接寫入了http響應(yīng)體中返回,而是寫入了一個(gè)緩沖區(qū),緩沖區(qū)再一點(diǎn)點(diǎn)輸出。如下就是緩沖區(qū)的那個(gè)類:
org.apache.catalina.connector.OutputBuffer
調(diào)用了里面這個(gè)方法,先檢測(cè)連接沒斷開,然后檢測(cè)緩沖區(qū)還有數(shù)據(jù),最后響應(yīng)輸出數(shù)據(jù)。

瀏覽器停止接收時(shí),springboot發(fā)現(xiàn)輸出不了數(shù)據(jù),主動(dòng)拋出了這個(gè)異常。
這樣做可能是希望讓上層應(yīng)用自己攔截處理,但目前這個(gè)視頻播放場(chǎng)景,因?yàn)橛辛司彌_區(qū),所以該異常不會(huì)導(dǎo)致視頻數(shù)據(jù)丟失,不影響視頻播放,不需要關(guān)注這個(gè)異常,因此建立全局的異常攔截器屏蔽就好了。
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
@ExceptionHandler(ClientAbortException.class)
public void handleClientAbortException(ClientAbortException e){}
}到此這篇關(guān)于Springboot視頻接口報(bào)大量的ClientAbortException找不到原因的解決的文章就介紹到這了,更多相關(guān)Springboot ClientAbortException找不到原因內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot靜態(tài)視頻實(shí)時(shí)播放的實(shí)現(xiàn)代碼
- SpringBoot+阿里云OSS實(shí)現(xiàn)在線視頻播放的示例
- vue+flv.js+SpringBoot+websocket實(shí)現(xiàn)視頻監(jiān)控與回放功能
- Springboot項(xiàng)目使用html5的video標(biāo)簽完成視頻播放功能
- springboot接收別人上傳的本地視頻實(shí)例代碼
- spring boot實(shí)現(xiàn)阿里云視頻點(diǎn)播上傳視頻功能(復(fù)制粘貼即可)
- SpringBoot + thymeleaf 實(shí)現(xiàn)讀取視頻列表并播放視頻功能
- spring boot 實(shí)現(xiàn)阿里云視頻點(diǎn)播功能(刪除視頻)
- Springboot實(shí)現(xiàn)視頻上傳及壓縮功能
- SpringBoot整合阿里云視頻點(diǎn)播的過程詳解
- vue+springboot上傳文件、圖片、視頻及回顯到前端詳解
相關(guān)文章
Java Arrays.sort和Collections.sort排序?qū)崿F(xiàn)原理解析
這篇文章主要介紹了Java Arrays.sort和Collections.sort排序?qū)崿F(xiàn)原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
SpringBoot中使用EasyExcel并行導(dǎo)出多個(gè)excel文件并壓縮zip后下載的代碼詳解
SpringBoot的同步導(dǎo)出方式中,服務(wù)器會(huì)阻塞直到Excel文件生成完畢,在處理大量數(shù)據(jù)的導(dǎo)出功能,本文給大家介紹了SpringBoot中使用EasyExcel并行導(dǎo)出多個(gè)excel文件并壓縮zip后下載,需要的朋友可以參考下2024-09-09
Spring?session?redis?修改默認(rèn)的序列化方法(案例)
這篇文章主要介紹了Spring?session?redis?修改默認(rèn)的序列化方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04
Java 如何繞過迭代器遍歷時(shí)的數(shù)據(jù)修改異常
這篇文章主要介紹了Java 繞過迭代器遍歷時(shí)的數(shù)據(jù)修改異常的方法,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下2021-02-02
關(guān)于SHA算法原理與常用實(shí)現(xiàn)方式
這篇文章主要介紹了關(guān)于SHA算法原理與常用實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
Java泛型T,E,K,V,N,?與Object區(qū)別和含義
Java?泛型(generics)是?JDK?5?中引入的一個(gè)新特性,?泛型提供了編譯時(shí)類型安全檢測(cè)機(jī)制,該機(jī)制允許程序員在編譯時(shí)檢測(cè)到非法的類型。本文將詳細(xì)講講Java泛型T、E、K、V、N、?和Object區(qū)別和含義,需要發(fā)可以參考一下2022-03-03

