@ChannelHandler.Sharable public class LineEncoder extends MessageToMessageEncoder<java.lang.CharSequence>
String
应用行分隔符并将其编码为ByteBuf
。
TCP / IP套接字中基于文本的行协议的典型设置为:
ChannelPipeline
pipeline = ...;
// Decoders
pipeline.addLast("frameDecoder", new LineBasedFrameDecoder
(80));
pipeline.addLast("stringDecoder", new StringDecoder
(CharsetUtil.UTF_8));
// Encoder
pipeline.addLast("lineEncoder", new LineEncoder
(LineSeparator.UNIX, CharsetUtil.UTF_8));
然后您可以使用String
而不是ByteBuf
作为消息:
void channelRead(ChannelHandlerContext
ctx, String
msg) {
ch.write("Did you say '" + msg + "'?");
}
ChannelHandler.Sharable
Constructor and Description |
---|
LineEncoder()
用当前系统行分隔符和UTF-8字符集编码创建一个新实例。
|
LineEncoder(java.nio.charset.Charset charset)
用指定的字符集创建一个新的实例。
|
LineEncoder(LineSeparator lineSeparator)
用指定的行分隔符和UTF-8字符集编码创建一个新实例。
|
LineEncoder(LineSeparator lineSeparator, java.nio.charset.Charset charset)
用指定的行分隔符和字符集创建一个新实例。
|
Modifier and Type | Method and Description |
---|---|
protected void |
encode(ChannelHandlerContext ctx, java.lang.CharSequence msg, java.util.List<java.lang.Object> out)
从一条消息编码到另一条消息。
|
acceptOutboundMessage, write
bind, close, connect, deregister, disconnect, flush, read
ensureNotSharable, exceptionCaught, handlerAdded, handlerRemoved, isSharable
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
exceptionCaught, handlerAdded, handlerRemoved
public LineEncoder()
public LineEncoder(LineSeparator lineSeparator)
public LineEncoder(java.nio.charset.Charset charset)
public LineEncoder(LineSeparator lineSeparator, java.nio.charset.Charset charset)
protected void encode(ChannelHandlerContext ctx, java.lang.CharSequence msg, java.util.List<java.lang.Object> out) throws java.lang.Exception
MessageToMessageEncoder
encode
在课堂
MessageToMessageEncoder<java.lang.CharSequence>
ctx
- 这MessageToMessageEncoder
属于的ChannelHandlerContext
msg
- 要编码到另一个的消息
out
- 应该添加编码味精的
List
需要做某种聚合
java.lang.Exception
- 发生错误时抛出
Copyright © 2008–2018 The Netty Project. All rights reserved.