À propos du projet

Nano est une bibliothèque réseau de serveur de jeu facile à utiliser, rapide et légère pour Go. Elle fournit une architecture réseau centrale ainsi qu'une série d'outils et de bibliothèques qui aident les développeurs à éliminer le travail répétitif pour la logique sous-jacente courante. L'objectif est d'améliorer l'efficacité du développement en supprimant le besoin de passer du temps sur une programmation réseau répétitive. Nano est conçu pour des applications côté serveur comme les jeux en temps réel, les jeux sociaux, les jeux mobiles, etc., de toutes tailles. ## Comment construire un système avec Nano Une application Nano est un ensemble de composants, et un composant est un ensemble de handlers. Une fois que vous enregistrez un composant auprès de Nano, il enregistre toutes les méthodes pouvant être converties en handlers dans le conteneur de services Nano. Les services sont accessibles par `Component.Handler`, et le handler est appelé lorsqu'un client fait une requête. Le handler reçoit deux paramètres lors du traitement d'un message : - `*session.Session` : correspond à un client qui applique cette requête ou notification. - `*protocol.FooBar` : la charge utile de la requête. Après avoir traité la logique, vous pouvez répondre ou pousser des messages au client via `session.Response(payload)` et `session.Push('eventName', payload)`, ou renvoyer une erreur lorsque des données inattendues sont reçues. Nano inclut une solution de système distribué intégrée, ce qui facilite la création de serveurs de jeu distribués. Voir la démo de chat distribué dans le répertoire examples/cluster. Vous pouvez démarrer un groupe d'applications Nano en tant qu'agents pour distribuer les messages aux serveurs backend. Pour les tâches asynchrones, Nano fournit `nano.Invoke` pour traiter les résultats dans la goroutine logique principale, comme montré dans l'exemple. ## Documents - Anglais : get started, route compression, communication protocol, design patterns, API reference (server), Lua integration (incomplete). - 简体中文 : 如何构建你的第一个nano应用, 路由压缩, 通信协议, API参考(服务器), 如何将lua脚本集成到nano组件中(未完成). ## Ressources - Clients JavaScript : nano-websocket-client, nano-egret-client. - TypeScript/cocos-creator : nano-client-ts. - Démos : chat room in 100 lines, tadpole demo, et un projet complet Sichuan Mahjong (nanoserver). ## Communauté - Le groupe QQ est plein ; contactez via WeChat `gsw_945` (note `nano加群`). - Reddit : nanolabs. ## Cas de succès - 空来血战 (fir.im/tios). ## Version Go > go1.8 ## Installation ```bash go get github.com/lonng/nano # dependencies 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 Téléchargez protoc depuis https://github.com/protocolbuffers/protobuf/releases, puis installez protoc-gen-go et protoc-gen-go-grpc, et delve. ## Test ```bash go test -v ./... ``` ## Benchmark Exemple : PingPong sur Windows 10, i5-6500 3.2GHz 4 Core/1000-Concurrent => IOPS 11W (Average). Exécutez avec `cd ./benchmark/io && go test -v -tags "benchmark"`. ## Licence MIT License.