我正在尝试使用MINA,并且所有示例似乎都将数据写入会话,而不是使用可以反复写入相同类型数据的方法。
我正在尝试使用org.apache.mina.filter.codec.demux.MessageEncoder
/ MessageDecoder
到encode
/ decode
消息,这样我就可以在中心位置执行任务在代码中内联它,就像示例那样。
假设我有一个ProtocolCodecFactory
(扩展DemuxingProtocolCodecFactory
),其LoginRequestEncoder
(实现MessageEncoder<LoginRequest>
,并通过工厂的addMessageEncoder
添加方法)。这是否意味着我不应该使用用户名/密码数据直接调用session.write()
,而应该做这样的事情?
LoginRequest request = new LoginRequest(username, password);
new ProtocolCodecFactory()
.getEncoder(session)
.encode(session, request, someProtocolEncoderOutput);
我不会撒谎...... MINA似乎应该简化网络流程,我确信它会在我处理它的时候,但我现在很困惑。
答案 0 :(得分:2)
事实证明,您可以通过IoSession.write()简单地发送请求。这是一个基于我原始问题的简单示例:
LoginRequest request = new LoginRequest(username, password);
session.write(request);