猿问

在netty中是否可以在同一个tcp连接中获得多个请求?

在 netty 中,是否可以在第一个请求正在进行时从同一个 tcp 客户端接收第二个请求。


以下是我尝试过的示例代码:


public class SomethingServerHandler extends SimpleChannelInboundHandler<Object> {

    protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {

    String stringMessage = (String) msg;

    if (log.isDebugEnabled()) {

        log.debug(stringMessage);

    }

    ctx.fireChannelRead(msg);

    String[] splitMessage = stringMessage.split("::");

    try {

        Thread.sleep(10000);

    } catch (InterruptedException e) {

        e.printStackTrace();

    }

    if ( splitMessage.length != 2 ) {

        ctx.channel().writeAndFlush(stringMessage + "\n\r");

        return;

    }

    if ( channelRepository.get(splitMessage[0]) != null ) {

        channelRepository.get(splitMessage[0]).writeAndFlush(splitMessage[1] + "\n\r");

    }       

}

从命令行:telnet localhost 端口


字符串1


字符串2


在服务器端 string2 在 string1 处理完成后 10 秒后打印。无论如何我可以并行处理string2吗?


提前感谢您的帮助。


largeQ
浏览 223回答 1
1回答

达令说

仅当您将工作卸载到另一个线程时。您正在阻塞,EventLoop这意味着它的线程上不会发生其他工作。这不仅会影响此连接,还会影响由相同处理的所有其他连接EventLoop。
随时随地看视频慕课网APP

相关分类

Java
我要回答