这个项目能做什么
Nano是一个易于使用、快速、轻量级的Go游戏服务器网络库。它提供了核心网络架构以及一系列工具和库,帮助开发者消除常见底层逻辑的重复工作。其目标是通过消除在重复性网络相关编程上花费时间的需求来提高开发效率。
Nano专为各种规模的服务器端应用设计,如实时游戏、社交游戏、手机游戏等。
## 如何使用Nano构建系统
Nano应用是组件的集合,而组件是处理器的捆绑。一旦将组件注册到Nano,它就会将所有可转换为处理器的方法注册到Nano服务容器中。服务通过`Component.Handler`访问,当客户端请求时调用处理器。处理器在处理消息时接收两个参数:
- `*session.Session`:对应于发起此请求或通知的客户端。
- `*protocol.FooBar`:请求的负载。
处理逻辑后,您可以通过`session.Response(payload)`和`session.Push('eventName', payload)`响应或推送消息给客户端,或在收到意外数据时返回错误。
Nano包含内置的分布式系统解决方案,使创建分布式游戏服务器变得容易。请参阅examples/cluster目录中的分布式聊天演示。您可以将一组Nano应用作为代理启动,以将消息分发到后端服务器。
对于异步任务,Nano提供`nano.Invoke`在主逻辑goroutine中处理结果,如示例所示。
## 文档
- 英文:入门指南、路由压缩、通信协议、设计模式、API参考(服务器)、Lua集成(未完成)。
- 简体中文:如何构建你的第一个nano应用、路由压缩、通信协议、API参考(服务器)、如何将lua脚本集成到nano组件中(未完成)。
## 资源
- JavaScript客户端:nano-websocket-client、nano-egret-client。
- TypeScript/cocos-creator:nano-client-ts。
- 演示:100行聊天室、蝌蚪演示以及完整的四川麻将项目(nanoserver)。
## 社区
- QQ群已满;通过微信`gsw_945`联系(注明`nano加群`)。
- Reddit:nanolabs。
## 成功案例
- 空来血战(fir.im/tios)。
## Go版本
> go1.8
## 安装
```bash
go get github.com/lonng/nano
# 依赖
go get -u github.com/pingcap/check
go get -u github.com/pingcap/errors
go get -u github.com/urfave/cli
go get -u google.golang.org/protobuf/proto
go get -u github.com/gorilla/websocket
go get -u google.golang.org/grpc
```
## Protocol Buffers
从https://github.com/protocolbuffers/protobuf/releases下载protoc,然后安装protoc-gen-go和protoc-gen-go-grpc,以及delve。
## 测试
```bash
go test -v ./...
```
## 基准测试
示例:在Windows 10、i5-6500 3.2GHz 4核/1000并发上的PingPong => IOPS 11W(平均)。使用`cd ./benchmark/io && go test -v -tags "benchmark"`运行。
## 许可证
MIT许可证。
评论
0 人表达喜爱 · 满10人后显示 Deer Point
登录后参与讨论。