关于netty的几个小问题 ?

plugin 发布于 2015/10/31 22:00
阅读 230
收藏 0
// 如果是握手应答消息,需要判断是否认证成功
	if (message.getHeader() != null
		&& message.getHeader().getType() == MessageType.LOGIN_RESP
			.value()) {
	    byte loginResult = (byte) message.getBody();
	    if (loginResult != (byte) 0) {
		// 握手失败,关闭连接
		ctx.close();
	    } else {
		System.out.println("Login is ok : " + message);
		ctx.fireChannelRead(msg);
	    }
	} else
	    ctx.fireChannelRead(msg);

}





这是书上LoginAuthReqHandler节选的一段小程序

我有一些困惑的地方,

1. 握手失败,作者直接关闭了连接, 不关闭让用户重试不就省了重新建立连接的花费吗

2.握手成功, 把消息传递到下一个handler了,我觉得此处返回一个认证成功就客户端即可,不需要在往下面的handler传递了

3.

public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
ctx.fireExceptionCaught(cause);
   }

对于这个方法,我奇怪,为什么发生异常了还要继续传递下去.不应该返回错误信息给用户,然后关闭连接吗

4. ctx.attr();里可以放些什么东西呢?我想把一个用户的基本信息,不包括密码这些敏感的, 都保存在里面是否合理呢

菜鸟在学习netty的过程中的一些困惑,请前辈们解答.谢谢了

加载中
0
plugin
plugin
刚刚在群里有人告诉我, 每个handler都有一个context.那我在用户验证的handler里拿到用户相关的信息, 在其他的handler里,我要用到这些信息,岂不是通过attr也没办法传递了吗
plugin
plugin
回复 @根植于内心的修养 : 哦.我明白了.实际上attr是附着在channel上的.
金贞花
金贞花
attr 是你的session
返回顶部
顶部