このプロジェクトについて
Nanoは、Go言語向けの使いやすく高速で軽量なゲームサーバーネットワーキングライブラリです。コアネットワークアーキテクチャと一連のツールおよびライブラリを提供し、開発者が一般的な基盤ロジックにおける反復作業を排除できるように支援します。目的は、反復的なネットワーク関連プログラミングに時間を費やす必要をなくすことで、開発効率を向上させることです。
Nanoは、あらゆる規模のリアルタイムゲーム、ソーシャルゲーム、モバイルゲームなどのサーバーサイドアプリケーション向けに設計されています。
## Nanoでシステムを構築する方法
Nanoアプリケーションはコンポーネントの集合であり、コンポーネントはハンドラの束です。コンポーネントをNanoに登録すると、ハンドラに変換可能なすべてのメソッドがNanoサービスコンテナに登録されます。サービスには`Component.Handler`でアクセスし、クライアントがリクエストするとハンドラが呼び出されます。ハンドラはメッセージを処理する際に2つのパラメータを受け取ります:
- `*session.Session`: このリクエストまたは通知を送信したクライアントに対応します。
- `*protocol.FooBar`: リクエストのペイロードです。
ロジックを処理した後、`session.Response(payload)`および`session.Push('eventName', payload)`を介してクライアントに応答またはメッセージをプッシュできます。また、予期しないデータを受信した場合はエラーを返すことができます。
Nanoには組み込みの分散システムソリューションが含まれており、分散ゲームサーバーを簡単に作成できます。examples/clusterディレクトリにある分散チャットのデモを参照してください。エージェントとしてNanoアプリケーションのグループを起動し、バックエンドサーバーにメッセージをディスパッチできます。
非同期タスクについては、Nanoは`nano.Invoke`を提供し、例に示すようにメインの論理ゴルーチンで結果を処理します。
## ドキュメント
- 英語: はじめに、ルート圧縮、通信プロトコル、設計パターン、APIリファレンス(サーバー)、Lua統合(不完全)。
- 簡体字中国語: 最初のnanoアプリケーションの構築方法、ルート圧縮、通信プロトコル、APIリファレンス(サーバー)、Luaスクリプトをnanoコンポーネントに統合する方法(未完成)。
## リソース
- JavaScriptクライアント: nano-websocket-client、nano-egret-client。
- TypeScript/cocos-creator: nano-client-ts。
- デモ: 100行のチャットルーム、tadpoleデモ、完全な四川麻雀プロジェクト(nanoserver)。
## コミュニティ
- QQグループは満員です。WeChat `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 License。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.