link包的定位:用于构建网络层的脚手架而不是服务端框架。
link包管哪些事情:
- 通过封装net.Conn提供常用的协议解析用的读写方法提高构建网络层的效率
- 通过使用bufio,减少消息收发和协议解析过程的io调用
- 提供基本的会话管理和广播机制
link包不管哪些事情:
- 对于link.Conn,link包不负责线程安全性,如果使用者想从link.Conn开始构建自己的网络层,应该参考app_session.go中的做法,在消息收发的时候进行加锁保护
- 不负责具体的消息分包逻辑,使用者通过自定义OutMessage和InMessage来实现消息的封包解包
- 不负责具体的优化,比如广播时link只要求提供OutMessage,使用者如果想做到消息一次编码到处广播,应该自己实现广播所需的OutMessage来做到优化