有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java增加Spring MVC服务器上HTML5音频的连接超时

我有一个Spring MVC Java web应用程序,它使用HTML5音频标签播放音频文件。我的MVC控制器通过写入响应来流式传输音频文件。getOutputStream()

当音频文件很小(<;6mb)时,浏览器会立即下载整个音频文件并播放,不会出现问题。当音频文件较大时,浏览器将下载约6mb的数据,然后等待播放完成后再请求更多数据。它不会关闭连接,只是在从流请求更多数据之前等待

然后,无论在Tomcat服务器的HTTP连接器上设置了多长时间的connectionTimeout,服务器都将等待。xml(默认值为20秒)。然后Tomcat抛出一个SocketTimeoutException,结束连接

然后,浏览器将播放,直到下载内容结束,并将错误ERR_CONTENT_LENGTH_MISMATCH打印到控制台。这是因为浏览器请求了整个文件,但服务器在发送所有数据之前终止了连接。它对其余数据发出HTTP范围请求,打开一个新连接。这是天衣无缝的,歌曲继续播放。然而,它不应该这样做。它应该能够在歌曲的整个过程中保持原始连接打开

一种修复方法是增加服务器中Tomcat的connectionTimeout。xml。但是,我更愿意只为应用程序而不是为Tomcat服务器全局执行此操作。更好的是,只使用一个MVC控制器方法来流式传输音频。这可能吗


共 (0) 个答案