{"repo":"Allenxuxu/gev","free":true,"listed":false,"github":"https://github.com/Allenxuxu/gev","clone":"git clone https://github.com/Allenxuxu/gev.git","description":"🚀Gev is a lightweight, fast non-blocking TCP network library / websocket server based on Reactor mode. Support custom protocols to quickly and easily build high-performance servers.","language":"Go","stars":1774,"topics":["epoll-tcp-server","kqueue","golang","reactor","nonblocking","epoll","network-programming","event-driven","go","gev"],"license":"MIT","category":"dev-tools","readme_excerpt":"gev 中文 English gev is a lightweight, fast non-blocking TCP network library / websocket server based on Reactor mode. Support custom protocols to quickly and easily build high-performance servers. Features - High-performance event loop based on epoll and kqueue - Support multi-core and multi-threading - Dynamic expansion of read and write buffers implemented by Ring Buffer - Asynchronous read and write - SO REUSEPORT port reuse support - Automatically clean up idle connections - Support WebSocket/Protobuf, custom protocols - Support for scheduled tasks, delayed tasks - High performance websocket server Network model gev uses only a few goroutines, one of them listens for connections and the others (work coroutines) handle read and write events of connected clients. The count of work coroutines is configurable, which is the core number of host CPUs by default. Performance Test 📈 Test chart Test environment: Ubuntu18.04 4 Virtual CPUs 4.0 GiB Throughput Test limit GOMAXPROCS=1（Single thread），1 work goroutine limit GOMAXPROCS=4，4 work goroutine Other Test Speed ​​Test Compared with the simple performance of similar libraries, the pressure measurement method is the same as the evio project. - gnet - eviop - evio - net (StdLib) limit GOMAXPROCS=1，1 work goroutine limit GOMAXPROCS=1，4 work goroutine limit GOMAXPROCS=4，4 work goroutine Install Getting start echo demo Handler is an interface that programs must implement. OnMessage will be called back when a complete data frame arrive","default_branch":null,"files":null,"tree":[],"storefront":"/r/Allenxuxu","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/Allenxuxu/gev/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}