Netty 完成会话时发送欢迎消息。难道没有afterConnectionEstablished方法(Spring WebSocket)

mmdee 发布于 2018/08/11 21:15
阅读 488
收藏 0

我想在会话建立完成后发送欢迎消息(连接成功自动返回欢迎消息),但是Netty好像没有这个回调方法!

在(Spring WebSocket)中都有会话建立完成后的回调方法afterConnectionEstablished方法,但是我在Netty中没有找到类似方法。

@Override
public void handlerAdded(ChannelHandlerContext ctx) throws Exception {  // (2)
    //此方法会话正在建立,发送消息无效!
    ctx.channel().writeAndFlush(new TextWebSocketFrame("[SERVERc] - " + incoming.remoteAddress() + " 欢迎加入"));
    channels.add(ctx.channel());
}
@Override
public void channelActive(ChannelHandlerContext ctx) throws Exception { // (5)
    //此方法虽然已在线,但客户端任然无法收到欢迎消息
   ctx.channel().writeAndFlush(new TextWebSocketFrame("[SERVERc] - " + incoming.remoteAddress() + " 欢迎加入")); 
}

以下是问题补充:

@mmdee:异步发送消息都是正常的 (2018/08/11 21:28)
加载中
0
银杏卡卡
银杏卡卡

重写channelActive时,调用super.channelActive(ctx);  再用ctx.writeAndFlush发送消息。重写父级方法,如果方法体不是完全覆盖,建议习惯性的加上super.方法。如果父级方法不是空的,你也应该多多考量是否需要加上super此方法。

channelActive发送数据是调用super方法之前还是之后你自己尝试一下,channelActive父级方法里调用了ctx.fireChannelActive();方法,此方法会激活运行后面相应的Handler,channelActive中你如果不调用super方法,后面的消息体就不能被正常封装为你想要的数据包。

0
k
kenneth123

在业务handler 里处理,用户连接上来发送信息, 打上标记。

返回顶部
顶部