Netty WebSocket-要驾驶“;“操作完成”;“的;“未来”;正确地
我正在编写一个应用程序,通过WebSocket将小文件(~2kb)从Netty服务器发送到客户端 为了测试文件发送是否成功,我进行了以下测试Netty WebSocket-要驾驶“;“操作完成”;“的;“未来”;正确地,websocket,netty,Websocket,Netty,我正在编写一个应用程序,通过WebSocket将小文件(~2kb)从Netty服务器发送到客户端 为了测试文件发送是否成功,我进行了以下测试 客户端连接到服务器 设置从客户端计算机上的服务器删除所有数据包 服务器向客户端发送一个文件 正在服务器上检查“ChannelFuture”的结果 在这个测试中,当我发送一个~2kb的文件时,我立即从“future.issucess()”和“future.isDone()”中得到了true,即使客户端无法接收该文件 我对较大的文件重复了这个测试。我发现,如果
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”如何正确工作吗
非常感谢 ChannelFuture仅在数据可以写入远程对等方时才会收到通知。所以如果通知了它,那么另一个对等方就没有问题地接收到数据。这适用于所有大小的数据。我的测试有错误吗?发送小文件时,ChannelFuture无法在我的应用程序中正常工作。。。如果连接断开,我怎样才能让ChannelFuture测试正常工作?非常感谢!我以为当Netty将数据写入操作系统缓冲区时,ChannelFuture收到了通知。如果没有明确的应用程序级确认消息,应用程序无法确定数据已到达远程对等方。它似乎在等待更大的消息被传输,但我怀疑这只是基于网络条件的共同影响。感谢您解释未来的细节。添加确认消息似乎是解决我的问题的唯一方法。再次感谢你的帮助!