java - 在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吗?
提前感谢您的帮助。
解决方案
仅当您将工作卸载到另一个线程时。您正在阻塞,EventLoop
这意味着它的线程上不会发生其他工作。这不仅会影响此连接,还会影响由相同处理的所有其他连接EventLoop
。
推荐阅读
- java - 如何在java中检查用户输入是纯文本还是日期
- azure - Graph API User Delta URL
- c# - ASP.Net core how to secure connection string sensitive data in non Azure hosting
- java - 从字符串变量加载活动
- matlab - 自“0000 年 1 月 1 日”以来的序列号:这是 -1 BC 还是 +1 CE?
- python - 如何让所有用户与 Telebot 进行电报聊天或在 Python 中请求 lib?
- azure - 如何将环境特定值传递给 Azure 管道?
- android - 将进度条居中对齐
- javascript - 对数组进行反应映射并在 div 中返回
- mysql - 当字段为空时,SQL 查询“like”运算符错误