You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
1 week ago | |
|---|---|---|
| .cursor/rules | 1 week ago | |
| cmd | 1 week ago | |
| docs/kb | 1 week ago | |
| examples | 1 week ago | |
| internal | 1 week ago | |
| pkg | 1 week ago | |
| test | 1 week ago | |
| .gitignore | 1 week ago | |
| README.md | 1 week ago | |
| go.mod | 1 week ago | |
| go.sum | 1 week ago | |
README.md
nnet
基于 Go 1.25.4 和 gnet 2.9.5 实现的高性能、功能完备的网络库。
特性
- ✅ 多协议支持:TCP、UDP、WebSocket、Unix Domain Socket、TLS、串口等
- ✅ 现代化的路由系统:支持字符串匹配、帧头匹配、帧数据匹配
- ✅ 灵活的中间件系统:全局中间件、路由级中间件
- ✅ 协议版本管理:支持单协议多版本,灵活的版本识别策略
- ✅ 连接管理:连接分组、跨连接操作
- ✅ Session管理:支持内存、文件、Redis等存储策略
- ✅ 内置客户端:支持TCP、UDP、WebSocket等协议
- ✅ 插件系统:可扩展的插件架构
- ✅ 指标监控:Prometheus格式的Metrics
- ✅ 健康检查:内置健康检查接口
安装
go get github.com/noahlann/nnet
快速开始
服务器示例
package main
import (
"github.com/noahlann/nnet/pkg/nnet"
)
func main() {
// 创建服务器
server, err := nnet.NewServer(&nnet.Config{
Addr: "tcp://:8080",
})
if err != nil {
panic(err)
}
// 注册路由
server.Router().RegisterString("/hello", func(ctx nnet.Context) error {
return ctx.Response().WriteString("Hello, nnet!")
})
// 启动服务器
if err := server.Start(); err != nil {
panic(err)
}
}
客户端示例
package main
import (
"github.com/noahlann/nnet/pkg/nnet"
"time"
"fmt"
)
func main() {
// 创建客户端
client := nnet.NewClient(&nnet.ClientConfig{
Addr: "tcp://localhost:8080",
})
// 连接服务器
if err := client.Connect(); err != nil {
panic(err)
}
// 发送请求
response, err := client.Request([]byte("hello"), 5*time.Second)
if err != nil {
panic(err)
}
fmt.Println("Response:", string(response))
}
文档
完整的文档知识库位于 docs/kb/ 目录。
快速链接
用户指南
项目结构
nnet/
├── cmd/ # 命令行工具和示例
├── internal/ # 内部实现
├── pkg/ # 对外暴露的包
├── examples/ # 示例代码
├── test/ # 测试代码
└── docs/ # 文档
开发状态
🚧 开发中 - 项目正在积极开发中,API可能会有变化。
贡献
欢迎贡献!请查看 CONTRIBUTING.md 了解详情。
许可证
链接
- 模块路径:
github.com/noahlann/nnet - GitHub: https://github.com/noahlann/nnet
- Gitee: https://gitee.com/noahlann/nnet (镜像)