[BUG]消息丢失
ngtrio opened this issue · comments
ngtrio commented
while ((size = client.read(buf)) > 0) {
buf.flip();
baos.write(buf.array(), 0, size);
buf.clear();
}
在ReadEventHandler中,TCP可能粘包,此处baos存入的可能是多条消息的字节流,反序列化会导致客户端到达的部分消息丢失。(在ReadEventHandler中sleep一下就能看到此bug)
Jasper Song commented
是的,确实有这个问题。可以先写一个包的长度,再读取这个长度,看后面可以读的字节数有没有这么长,没有的话就全部放回,有的话再读出来