在Netty中,是否可能在同一TCP连接中获得多个请求?

时间:2018-12-12 04:20:32

标签: java asynchronous netty nio

在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本地主机端口

string1

string2

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

在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

仅当您将工作卸载到另一个线程时。您正在阻止var apiMiddleware = function(data) { var dispatch = data.dispatch; var getState = data.getState; return function(next) { return function(action) { //Rest of the code } } } ,这意味着在其线程上无法进行任何其他工作。这不仅会影响此连接,还会影响由同一EventLoop处理的所有其他连接。