为了账号安全,请及时绑定邮箱和手机立即绑定

为什么使用mina后,当服务端接收到消息后返回的消息跟客户端发送的消息不同时,客户端无法接收到消息

在MinaMessageHandler里面的messageReceived函数

public void messageReceived(IoSession session, Object message)
throws Exception {
System.out.println("messageReceived: " + message);
// 这样写时客户端能接到消息
session.write(message);
// 这样写时客户央不能接到消息
session.write("message received");
}
发现这样的问题是出现在使用了自定义的MyTextLineCodecFactory
acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new MyTextLineCodecFactory()));
如果使用系统的TextLineCodecFactory,则不会出现这样的问题
acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory()));

有没有人知道是为什么?


正在回答

7 回答

mina传输必须是IoBuffer类型

0 回复 有任何疑惑可以回复我~

333ffffffffffffffffffffffffffffee

1 回复 有任何疑惑可以回复我~

1111111111

1 回复 有任何疑惑可以回复我~

在MyTextLineFactory类里面是否忘记加返回了,默认的是null,应该返回encoder与decoder才对

1 回复 有任何疑惑可以回复我~

我仔细检查了一遍发现是  MyTextLineDecoder   中少了out.write(str);这句话,你也仔细核对下

1 回复 有任何疑惑可以回复我~

我也出现了这样的情况,不知道演示的时候是怎么显示出来的


1 回复 有任何疑惑可以回复我~

因为没有写 换行符 \n 客户端读取时是readLine() 读取一行 没有换行符 不会读取,注意客户端和服务端的通信机制

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
见证Android消息推送时刻
  • 参与学习       48192    人
  • 解答问题       203    个

本课程将一步步教你如何搭建出一个自己的Android推送平台

进入课程

为什么使用mina后,当服务端接收到消息后返回的消息跟客户端发送的消息不同时,客户端无法接收到消息

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信