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

时间:2017-02-18 04:28:20

标签: java spring tomcat model-view-controller html5-audio

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

当音频文件很小(<6mb)时,浏览器会立即下载整个音频文件并毫无问题地播放。当音频文件较大时,浏览器将下载大约6mb,然后等待播放赶上,然后再请求更多数据。它不会关闭连接,但只需等待从流中请求更多数据。

然后,服务器将等待在Tomcat的server.xml中的HTTP连接器上设置connectionTimeout(默认为20秒)。然后Tomcat抛出一个SocketTimeoutException,结束连接。

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

一个解决方法是在server.xml中增加Tomcat的connectionTimeout。但是,我更愿意仅针对应用程序而不是全局针对Tomcat服务器执行此操作。更好的只是用于流式传输音频的一种MVC控制器方法。这可能吗?

0 个答案:

没有答案