WebSocket文件传输IndexOutOfBoundsException(缓冲区溢出)

时间:2018-12-28 23:06:04

标签: javascript websocket buffer netty

可以传输较小的文件而没有任何问题,但是当我使用较大的文件时,套接字不活动并关闭,原因1006。Netty抛出以下异常:https://hastebin.com/paxibawuco.bash(IndexOutOfBoundsException)正确地发生了缓冲区溢出。 由于我使用的是LengthFieldBasedFrameDecoder,因此不会出现此错误。它在每个发送的数据包之间使用500毫秒的计时器时也能正常工作。

@Override
protected void initChannel(SocketChannel channel) {

    ChannelPipeline pipe = channel.pipeline();

    pipe.addLast(ssl.newHandler(channel.alloc()));
    pipe.addLast(new HttpServerCodec());
    pipe.addLast(new HttpObjectAggregator(64 * 1024));
    pipe.addLast(new WebSocketServerProtocolHandler("/websocket"));
    pipe.addLast(new LengthFieldBasedFrameDecoder(64 * 1024, 0, 4, 0, 4));
    pipe.addLast(new FrameDecoder());
    pipe.addLast(new LengthFieldPrepender(4));
    pipe.addLast(new FrameEncoder());
    pipe.addLast(new ServerHandler());

}

有什么方法可以传输文件切片而不会阻塞线程或延迟发送数据包?

0 个答案:

没有答案