我最近正在学习Netty。我遇到了一个问题,就是我在ChannelInboundHandler.channelActive方法中放入了BlockingQueue。
旨在我想从BlockingQueue中获取消息,然后将消息发送到通道,但是事实是,只有一条消息发送到服务器。 这是下面的代码:
onPress = () => {
this.refs.button.measureInWindow((x, y, width, height) => {
console.log("x", x, "y", y);
})
}
render() {
<TouchableOpacity ref="button" onPress={this.onPress}>
...
</TouchableOpacity>
}
但是它不起作用,我从@Override
public void channleActive(ChannelHandlerContext ctx) throws Exception{
String msg = null;
while(true){
msg=msgQueue.take();
ctx.writeAndFlush(Unpooled.copiedBuffer(msg, CharsetUtil.UTF_8));
}
}
方法中仅得到一个响应。
我对网络生命周期的理解是否错误?有人可以帮我解释一下吗?
答案 0 :(得分:0)
您的代码将基本上在channelActive
中“阻止”,这意味着EventLoop
将永远无法做其他事情。这是不允许的。