Evnet是源自gnet的高性能的事件驱动网络框架

325 阅读1分钟

⚡ 简介

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()