xtaci / gaio

High performance async-io(proactor) networking for Golang。golangのための高性能非同期io(proactor)ネットワーキング

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

tls support

lesismal opened this issue · comments

心血来潮,把 nbio 又完善了下,kqueue加上了(但是我没有mac,只能用自动构建平台跑下test证明基本ok、没做其他大量测试),windows用std/net

timer还是换成了heap,之前用wheel发现,epoll_wait那个间隔太长的话定时器精度太低、并且大量事件时响应速度慢、性能差,时间太短的话tick太频繁、没数据的时候cpu有点飙

copy了标准库的tls,魔改了下支持了nbio,简单测了“粘包”之类的,应该算基本稳定了:
https://github.com/lesismal/nbio/tree/master/examples/tls

tls这个魔改,其他的异步库也可以用,但是依赖实现 net.Conn 作为 tls.Conn 的 under-layer
记得当初你还跟我说,nbio.Conn 实现了 net.Conn 没什么必要,现在看,算是无心插柳了,哈哈哈
实现net.Conn,给应用层SetDeadline还是挺有必要的
并且,我又撸了个http 1.x parser,现在 http server 也支持了
然后又撸了个 webwocket upgrader,websocket 也支持了

缓缓节奏,后面想把 http 2.0 也支持上,标准库的 tls 比较浪费,有档期也想重写一份