channelInboundHandler中的channelActive方法发送消息的问题

0 0 java netty
Sily°苏暖年
Sily°苏暖年

声望值:222 0人

2018-12-20 09:58:56 提问

关注 0关注

收藏 0收藏, 44浏览

1、在channelActive方法中调用writeAndFlush()方法发送消息的时候,为什么在之前的线程中调用会发送不出去呢?(也不会报错):
@Override

public void channelActive(ChannelHandlerContext ctx) throws Exception {
    Channel channel = ctx.channel();
    SocketAddress socketAddress = channel.remoteAddress();
    // 添加
    Global.group.add(channel);
    Global.group.writeAndFlush(new TextWebSocketFrame("entry to chat"));
    System.out.println("client and server start connect:" + socketAddress.toString());
}

2、如果我把这里的方法改成异步执行,就会发送出去:
@Override

public void channelActive(ChannelHandlerContext ctx) throws Exception {
    Channel channel = ctx.channel();
    SocketAddress socketAddress = channel.remoteAddress();
    // 添加
    Global.group.add(channel);
    TextWebSocketFrame frame = new TextWebSocketFrame("entry to chat");
    new Thread(() -> Global.group.writeAndFlush(frame)).start();
    System.out.println("client and server start connect:" + socketAddress.toString());
}

3、如果同时存在同步和异步两种调用的话,也不会有消息发送出去。
这个是什么问题呢?

请先 登录 后评论

0个回答

注册新账号

悬赏追问
10
  • 10
  • 20
  • 50
  • 100
  • 200
  • 输入数值
发布追问