Springboot視頻接口報(bào)大量的ClientAbortException找不到原因的解決
瀏覽器有自己的緩沖策略,比如視頻接口吐出了100MB的視頻數(shù)據(jù),瀏覽器可不會(huì)全部拿走,而是按需去拿,
舉個(gè)例子,瀏覽器拿的視頻數(shù)據(jù)夠看半分鐘的,就停止讀取數(shù)據(jù)了,但是http連接并未斷開(kāi),因?yàn)檫@半分鐘看完還要再去讀取數(shù)據(jù)。
springboot視頻接口向響應(yīng)流寫(xiě)入100MB數(shù)據(jù),并不是直接寫(xiě)入了http響應(yīng)體中返回,而是寫(xiě)入了一個(gè)緩沖區(qū),緩沖區(qū)再一點(diǎn)點(diǎn)輸出。如下就是緩沖區(qū)的那個(gè)類:
org.apache.catalina.connector.OutputBuffer
調(diào)用了里面這個(gè)方法,先檢測(cè)連接沒(méi)斷開(kāi),然后檢測(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)播的過(guò)程詳解
- vue+springboot上傳文件、圖片、視頻及回顯到前端詳解
相關(guān)文章
JAVA 文件監(jiān)控 WatchService的示例方法
本篇文章主要介紹了JAVA 文件監(jiān)控 WatchService的示例方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10
解決Maven parent.relativePath帶給我的坑
在Linux環(huán)境下使用Maven進(jìn)行項(xiàng)目打包時(shí),可能會(huì)遇到“當(dāng)前目錄沒(méi)有pom文件”的錯(cuò)誤,需要確認(rèn)在包含pom.xml文件的項(xiàng)目目錄下執(zhí)行Maven命令,另外,如果遇到“parent.relativePath points at wrong local POM”錯(cuò)誤,可能是父模塊依賴問(wèn)題2024-09-09
spring data簡(jiǎn)化jpa開(kāi)發(fā)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了spring data簡(jiǎn)化jpa開(kāi)發(fā),本文主要講述 Spring Data JPA,希望能夠深入學(xué)習(xí) Spring 和 JPA,有興趣的可以了解下2017-09-09
Swagger文檔自動(dòng)生成PDF/HTML/Word解決方案詳細(xì)指南
本指南詳細(xì)介紹了Swagger?YAML/JSON定義、Swagger?UI的使用、Swagger轉(zhuǎn)為Markdown格式以及Markdown轉(zhuǎn)為PDF/HTML/Word的過(guò)程,包括工具如Pandoc的運(yùn)用,并提供了一個(gè)Spring?Boot應(yīng)用集成Swagger2和Swagger2Markup的示例,闡述了API文檔的生成流程,感興趣的朋友一起看看吧2025-08-08
基于@Value注解和@ConfigurationProperities注解的區(qū)別及說(shuō)明
本文主要介紹了Spring?Boot中三種配置屬性的注入方式:@Value、Environment對(duì)象和@ConfigurationProperties,通過(guò)這些方式,可以方便地將配置文件中的屬性值綁定到Spring管理的Bean對(duì)象的屬性上,從而實(shí)現(xiàn)配置信息的動(dòng)態(tài)加載2026-03-03
Idea報(bào)錯(cuò): A JNI error has occurred的問(wèn)題
這篇文章主要介紹了Idea報(bào)錯(cuò): A JNI error has occurred的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
SpringBoot響應(yīng)處理實(shí)現(xiàn)流程詳解
這篇文章主要介紹了SpringBoot響應(yīng)處理實(shí)現(xiàn)流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-10-10

