
netty
文章平均质量分 63
挲迦
这个作者很懒,什么都没留下…
展开
-
【入门】netty 服务端离线检测handler
ChannelGroup 一个所有建立连接的channel的集合加入元素- 时机是handlerAdded事件被触发移除元素- 断开连接handlerRemoved,不过无需手动的移除注意点 handlerRemoved在手机飞行 或者强制关机的时候 这个方法是不会被调用的。这个时候得要依靠,轮训发ack确认是否存活。下面出来一...原创 2020-03-08 10:50:35 · 2549 阅读 · 0 评论 -
黏包&拆包处理
黏包&拆包处理netty提供了很多frame的编解码器 本次解析LengthFieldBaseFrameDecoder黏包出现 客户端发了10条数句,server端有时候 只打印一次,10条数据被融合了public class ServerHandlerChai extends SimpleChannelInboundHandler<ByteBuf> {...原创 2019-10-29 10:55:10 · 441 阅读 · 0 评论 -
netty-> 常用编解码处理器
简述分类入栈处理器(channelInboundHandler)&出栈处理器(channelOutboundHandler)里面全都是回调方法,方法被触发的时候,会调用对应的实现。常见的编解码器有encode&decodenetty自定义处理器「常用的编解码器 ReplayingDecoder 2 -> ByteToMessageDecoder 1」1使...原创 2019-10-24 10:25:35 · 325 阅读 · 0 评论 -
【入门】netty范式-client&server
serverpackage com.deppyu.netty.demo.server;import com.deppyu.netty.demo.server.websocket.WebSocketInitializer;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;im...原创 2019-10-17 20:24:34 · 154 阅读 · 0 评论 -
【入门】netty->byteBuf「非池化堆内内存」
结构图和nio有差异 同时有读写指针,写读不用恶心的切换了。唯一注意的就是读的时候有相对方法(readBytes)和绝对方法(getBytes),相对方法会改变读游标,绝对方法则不会创建byteBuf实例ByteBuf buf = Unpooled.buffer(10);写(写游标右移N字节)ByteBuf buf = Unpooled.buffer(10)...原创 2019-10-17 20:21:24 · 593 阅读 · 0 评论 -
【入门】nio->byteBuffer「堆内内存为例」
初始化实例//单位大小是byteByteBuffer buffer = ByteBuffer.allocate(10240);System.out.println("buffer = " + buffer);reset方法演示//clear -> limit=capacity position=0 mark=-1 buffer.clear();buffer.po...原创 2019-10-17 20:17:47 · 227 阅读 · 0 评论 -
【注意点】netty-> 作用域 channel和context
这两个拥有很多同名方法,主要差异如下channel的操作会经过左右的hanndle,context只是从自己这个handle往后操作context的事件流更短,所以context的性能会更好一些...原创 2019-10-17 19:36:11 · 434 阅读 · 0 评论 -
netty-> [组件] future promise简述
1.netty自己也定义了future 继承自jdk的future,更加实用点吧(主要是在完成的时候 可以添加listener<观察者模式>)jdk的只能主动的调用对应的方法去判断是否执行完毕2.promise是future的变种,可以设置结果的执行情况。类似于设置成功 完成 失败 抛异常。和listener双剑合璧注意点:channelFutur...原创 2019-10-17 09:53:10 · 145 阅读 · 0 评论 -
netty->[组件] channelHandlerContext.attr和channel.attr对比
这两个都是attributeMap的实现netty版本4.1开始,两者之间作用域相同,不存在每个handle中存在一个map ,context中也存在一个单独的map统一作用域的关键如下-> 具体的实现就是context其实是调用对应的channel的attr方法...原创 2019-10-11 20:11:08 · 4035 阅读 · 0 评论 -
netty->[组件] ChannelPipeline的addLast方法解析
随处可见的addLast方法,分两种情况。channel未注册和channel已注册 public final ChannelPipeline addLast(EventExecutorGroup group, String name, ChannelHandler handler) { final AbstractChannelHandlerContext newCtx...原创 2019-10-11 19:57:37 · 3004 阅读 · 1 评论 -
netty1 -> init「channel和channelPipeline的生成」
1.channel的生成时机channel可以简单理解成网络连接对象一般channel会在doBind和doConnect的时候生成,具体的可以跟一下initAndRegister方法具体生成比较简单:使用了反射工厂的 newInstance方法 不过channel的具体类型略有差异public class ReflectiveChannelFactory<T exten...原创 2019-09-29 10:55:32 · 812 阅读 · 0 评论 -
netty->[组件] ContantPool 以ChannelOption为例
看看init方法,里面有两个对象 ChannelOption和Attribute void init(Channel channel) throws Exception { ChannelPipeline p = channel.pipeline(); p.addLast(config.handler()); final Map<...原创 2019-09-30 11:11:23 · 157 阅读 · 0 评论 -
netty2-> 扒一扒register
入口还是initAndRegister final ChannelFuture initAndRegister() { Channel channel = null; try { channel = channelFactory.newChannel(); init(channel); }...原创 2019-09-29 17:41:01 · 387 阅读 · 0 评论