我尝试在具有webservlet和UI的系统上实现范围请求视频播放,该系统将从chrome开始的范围请求从字节:0开始发送到后端数据服务器。现在我一直在发送完整的流,因为我的印象是jetty服务器处理响应范围。我看到它适用于第一个和第二个请求但随后失败,因为下一个请求的范围小于之前的范围。
(请求1)范围:字节= 0-
(响应1)Accept-Ranges:bytes 内容长度:6748748 内容范围:字节0-10005 / 6748748
(请求2)范围:字节= 6717440-
(响应2)Accept-Ranges:bytes 内容长度:6748748 内容范围:字节6717440-6718465 / 6748748
(请求3)范围:字节= 3932160-
(响应3)Accept-Ranges:bytes 内容长度:6748748 内容范围:字节3932160-3933185 / 6748748
(请求4)范围:字节= 5701632- (回应4)失败 -
有人能理解这个吗?对于短视频,这不会发生,因此存在一些超时问题但是为什么Chrome请求的范围较小?这是我在标题中指定的内容,但是再次没有按照我认为jetty处理它的请求显式发送字节。
java.nio.channels.ClosedChannelException,
编辑:
我在dataserver端的日志与每个正在处理的请求一致显示以下内容:
java.nio.channels.ClosedChannelException
at
org.eclipse.jetty.util.IteratingCallback.close(IteratingCallback.java:427)
at org.eclipse.jetty.server.HttpConnection.onClose(HttpConnection.java:489)
at org.eclipse.jetty.io.ssl.SslConnection.onClose(SslConnection.java:217)
添加了额外的堆栈跟踪
$("#grid").jqGrid('groupingGroupBy',
['col1','col2'],
{
groupText : [ 'checkbox for col1', 'checkbox for col2']
...
}
);