简单看了下,暂时看到几个问题,windows 下的没有 uni*的跳转,所以没仔细看、不一定准确,供楼主参考:
1. fd 是非阻塞的,但读包解包用了 ReadFull 的逻辑,在本次只有半包数据时连接就被断开了,这是不应该作为生产服务来部署的
2. conn 直接写,数据量大写失败应判断 err 类型,缓冲区满、中断之类的应该 AddWrite 等待可写再写
3. server 处理 message 单协程,go 的指令不像 c/cpp 那么快,这种逻辑单协程性能可能会吃紧,如果说 handler 再自己加 pool 、异步之类的,则 server 这块的逻辑协程其实就不需要了