我是 Netty 的新手,到目前为止,有一个可以使用 StringEncoder 和 StringDecoder 处理字符串消息的工作客户端服务器,例如:
ServerBootstrap serverBootstrap = new ServerBootstrap();
serverBootstrap.group(bossGroup, workerGroup)
.channel(NioServerSocketChannel.class)
.handler(new LoggingHandler(LogLevel.TRACE))
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
public void initChannel(SocketChannel ch) throws Exception {
ch.pipeline().addLast(
new LoggingHandler(LogLevel.TRACE),
new DelimiterBasedFrameDecoder(Integer.MAX_VALUE, Delimiters.lineDelimiter()),
new StringEncoder(),
new StringDecoder(),
new ReceiveMessageCommunicatorHandler(localNode, inpeerNodeRegistry, outpeerNodeRegistry));
输入消息就像这样:excute_this和服务器发回:ok。
现在,我需要做的是服务器收到一条新的文本消息:get_object,它应该将序列化对象作为字节数组发送回任何客户端(例如:telnet 或使用普通套接字的 java 应用程序)。然后在这个客户端中,它可以将这个对象反序列化为 Java 对象。
我知道ObjectEncoder()似乎是这样做的方法。但是,它还将应该是字符串的响应序列化为序列化对象,而它应该为某些特定消息(例如:仅get_object)执行此操作。
我怎么能告诉 Netty 什么时候应该将结果编码为 StringEncoder,什么时候应该将序列化对象编码为字节数组?
慕娘9325324
阿波罗的战车
相关分类