finds.dev← search

// the find

aceld/zinx

★ 7,724 · Go · MIT · updated Jun 2026

A lightweight concurrent server framework based on Golang.

Zinx is a TCP server framework for Go, built primarily as a teaching tool for developers learning how long-lived connection servers work under the hood. It supports TCP, WebSocket, and KCP transports with a worker-pool-based message dispatcher. The primary audience is Go developers building game backends or other persistent-connection services who want something they can actually read and modify rather than treat as a black box.

The interface-first design (ziface/) makes the internals genuinely substitutable — you can swap the router, decoder, or logger without touching framework code. The interceptor chain is a clean approach to message processing pipelines that avoids the usual middleware spaghetti. KCP support is built-in, which matters for game servers where UDP reliability beats TCP latency. The included MMO demo with AOI grid logic is a real working example, not a toy ping server.

The worker pool is a fixed-size goroutine pool dispatching via channels — there's no backpressure mechanism, so a slow handler will silently fill `MaxWorkerTaskLen` and start dropping messages without obvious errors. Documentation is primarily in Chinese (the YuQue tutorials), and the English wiki is noticeably thinner — you'll hit gaps quickly if you don't read Chinese. The config system is a flat JSON file with no environment variable overrides, which is awkward for containerized deployments. There's no built-in session or state management beyond raw connection properties, so anything stateful (auth, game state) is entirely on you.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →