⚡ 简介
Evnet 是源于gnet的高性能的事件驱动的网络框架。它现在只支持Linux下的epoll系统调用。
✨ 特点
- 支持一个事件驱动机制:Linux上的epoll。
- 支持多种协议/IPC机制:TCP、UDP和Unix Domain Socket。
- 支持多种负载平衡算法:Round-Robin、Source-Addr-Hash和Least-Connections。
- 高效、可重复使用和弹性的内存缓冲区和零拷贝。
🎬 开始使用
go get github.com/bruce2233/evnet
type MyHandler struct {
BuiltinEventHandler
}
func (mh MyHandler) HandleConn(c Conn) {
p := make([]byte, 128)
n, err := unix.Read(c.Fd(), p)
println("unix.Read bytes n: ", n)
if err != nil {
panic("unix.Read")
}
println(string(p[:n]))
}
//main.go
readHandler := MyHandler{BuiltinEventHandler{}}
m := new(MainReactor)
m.Init("tcp", "127.0.0.1:9000")
m.SetEventHandler(readHandler)
m.Loop()