我是Netty的新手,并不是非常精通Java,我正在尝试建立一个连接并从Wowza下载HLS流的客户端。 我的目标不是查看视频,而是能够为Wowza服务器提供的HLS流进行压力测试而建立多个同时连接。
我一直在使用HttpSnoopClient
示例作为起点,示例客户端成功连接并从作为参数提供的网址(wowza-server/stream-name/playlist.m3u8
)下载播放列表内容。现在,我必须使用原始URI形成一个新的连接/请求,并将playlist.m3u8
替换为我正在解析的接收响应的一部分(类似chunklistxxxx.m3u8
)。之后,我需要处理该响应,该响应将为我提供视频文件的链接,并形成新的连续连接/请求以下载这些文件。下载完成后,将重复该过程以获取新块。
我的问题是:如何从String
将已处理的HttpSnoopClientHandler
返回到主类,以便我可以建立新连接?
答案 0 :(得分:0)
通常,您可以在HttpSnoopClientHandler
中定义成员字段:
class HttpSnoopClientHandler ... {
final BlockingQueue<String> content = new LinkedBlockingQueue<>();
final StringBuilder contentBuffer = new StringBuilder(...);
public void channelRead0(...) {
// On every HttpContent:
contentBuffer.append(...);
// On LastHttpContent:
content.add(contentBuffer.toString());
contentBuffer.setLength(0);
}
}
然后,您可以从content
班级获取Main
:
HttpSnoopClientHandler h = channel.pipeline().get(HttpSnoopClientHandler.class);
String content = h.content.poll(timeout, timeUnit);