我正在编写一个应用程序,通过WebSocket从Netty服务器向客户端发送小文件(~2kb)。
为了测试文件是否发送成功,我进行了以下测试。
当我在此测试中发送带有~2kb的文件时,我立即从“future.isSuccess()”和“future.isDone()”获得了,即使客户端无法接收该文件。
我为更大尺寸的文件重复此测试。我发现如果文件大小大于~7kb,“ChannelFuture future”将等待来自传输的反馈。这是我预期的结果。
我正在使用Netty3.6.1,我的应用程序是基于“org.jboss.netty.example.http.websocketx.server”构建的。
以下是我的代码的一部分:
ChannelBuffer cb = ChannelBuffers.copiedBuffer(myfile_byteArray);
ChannelFuture result = ctx.getChannel().write( new BinaryWebSocketFrame( cb ) );
result.addListener(new ChannelFutureListener() {
public void operationComplete(ChannelFuture future) throws Exception {
if (future.isSuccess()){
System.err.println("future.isSuccess()");
}
if (future.isDone()){
System.err.println("future.isDone()");
}
if (future.isCancelled()){
System.err.println("future.isCancelled()");
}
}
});
有谁知道如何让“ChannelFuture”正确处理文件较小的文件?
非常感谢提前!
答案 0 :(得分:0)
只有在可以将数据写入远程对等方时,才会通知ChannelFuture。因此,如果通知它,则另一个对等方接收数据没有问题。对于所有大小的数据都是如此。