gpt4 book ai didi

java - Netty + ProtoBuffer : A few communication messages for one connection

转载 作者:太空狗 更新时间:2023-10-29 22:56:25 25 4
gpt4 key购买 nike

在阅读 Netty 教程时,我发现了一个简单的 description如何集成 Netty 和 Google Protocol Buffers .我已经开始研究它的示例(因为文档中没有更多信息)并编写了一个简单的应用程序,如示例本地时间应用程序。但是这个例子是在 PipeFactory 类中使​​用静态初始化,例如:

import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelPipelineFactory;
import org.jboss.netty.handler.codec.protobuf.ProtobufDecoder;
import org.jboss.netty.handler.codec.protobuf.ProtobufEncoder;
import org.jboss.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;
import org.jboss.netty.handler.codec.protobuf.ProtobufVarint32LengthFieldPrepender;

import static org.jboss.netty.channel.Channels.pipeline;

/**
* @author sergiizagriichuk
*/
class ProtoCommunicationClientPipeFactory implements ChannelPipelineFactory {

public ChannelPipeline getPipeline() throws Exception {
ChannelPipeline p = pipeline();
p.addLast("frameDecoder", new ProtobufVarint32FrameDecoder());
p.addLast("protobufDecoder", new ProtobufDecoder(Communication.DataMessage.getDefaultInstance()));

p.addLast("frameEncoder", new ProtobufVarint32LengthFieldPrepender());
p.addLast("protobufEncoder", new ProtobufEncoder());

p.addLast("handler", new ProtoCommunicationClientHandler());
return p;
}

}

(请查看行 p.addLast("protobufDecoder", new ProtobufDecoder(Communication.DataMessage.getDefaultInstance()));)并且只能为 ClientBootstrap 类创建一个工厂(据我所知),我的意思是 bootstrap.setPipelineFactory() 方法。所以,在这种情况下,我可以使用 ONE 消息发送到服务器,并使用 ONE 消息从服务器接收,这对我不利,而且我认为不仅仅是对我而言: (我怎样才能为一个连接使用不同的消息来回?也许我可以像这样创建一些 protobufDecoder

p.addLast("protobufDecoder", new ProtobufDecoder(Communication.DataMessage.getDefaultInstance()));
p.addLast("protobufDecoder", new ProtobufDecoder(Communication.TestMessage.getDefaultInstance()));
p.addLast("protobufDecoder", new ProtobufDecoder(Communication.SrcMessage.getDefaultInstance()));

或其他技术?非常感谢。

最佳答案

我在 google groups 中找到了 netty 作者的帖子并且明白我必须像上面写的那样改变我的架构或编写我自己的解码器,所以,开始思考什么方法会更简单更好。

关于java - Netty + ProtoBuffer : A few communication messages for one connection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7803966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com