首页  

netty内置编解码器     所属分类 netty 浏览量 75
netty-codec
netty-codec-http
netty-codec-http2
netty-codec-memcache
netty-codec-redis
netty-codec-socks
netty-codec-stomp
netty-codec-mqtt
netty-codec-haproxy
netty-codec-dns

codec  一般和 Frame detection 配合使用,
先使用Frame detection将ByteBuf拆分成一个个代表真实数据的ByteBuf,
再交由netty内置的codec或者自定义的codec进行处理


netty中基本的codec有 base64、bytes、compression、json、marshalling、protobuf、serialization、string和xml这几种

Base64Encoder 和 Base64Decoder

// Decoders
pipeline.addLast("frameDecoder", new DelimiterBasedFrameDecoder(80, Delimiters.nulDelimiter()));
pipeline.addLast("base64Decoder", new Base64Decoder());

// Encoder
pipeline.addLast("base64Encoder", new Base64Encoder());



// Decoders
pipeline.addLast("frameDecoder",new LengthFieldBasedFrameDecoder(1048576, 0, 4, 0, 4));
pipeline.addLast("bytesDecoder",new ByteArrayDecoder());

// Encoder
pipeline.addLast("frameEncoder", new LengthFieldPrepender(4));
pipeline.addLast("bytesEncoder", new ByteArrayEncoder());


JsonObjectDecoder
ByteToMessageDecoder的子类,不需要FrameDecoder,
根据括号的匹配来判断Byte数组的起始位置,从而区分哪些Byte数据是属于同一个Json对象或者数组。


// Decoders
pipeline.addLast("frameDecoder",new LengthFieldBasedFrameDecoder(1048576, 0, 4, 0, 4));
pipeline.addLast("protobufDecoder",new ProtobufDecoder(MyMessage.getDefaultInstance()));

// Encoder
pipeline.addLast("frameEncoder", new LengthFieldPrepender(4));
pipeline.addLast("protobufEncoder", new ProtobufEncoder());




public LengthFieldBasedFrameDecoder(ByteOrder byteOrder, int maxFrameLength, int lengthFieldOffset, int lengthFieldLength, int lengthAdjustment, int initialBytesToStrip, boolean failFast) {



// Decoders
pipeline.addLast("frameDecoder", new LineBasedFrameDecoder(80));
pipeline.addLast("stringDecoder", new StringDecoder(CharsetUtil.UTF_8));

// Encoder
pipeline.addLast("stringEncoder", new StringEncoder(CharsetUtil.UTF_8));


XmlFrameDecoder

上一篇     下一篇
dolphinscheduler配置说明

Sec-WebSocket-Key 说明

WebSocket介绍

MQTT与WebSocket

WebSocket通信过程及原理

websocket 聊天室简单例子