Sobre o projeto
Nano é uma biblioteca de rede para servidores de jogos em Go, fácil de usar, rápida e leve. Ela fornece uma arquitetura de rede central e uma série de ferramentas e bibliotecas que ajudam desenvolvedores a eliminar trabalho repetitivo para lógica subjacente comum. O objetivo é melhorar a eficiência de desenvolvimento, removendo a necessidade de gastar tempo com programação repetitiva relacionada a rede.
Nano é projetado para aplicações do lado do servidor, como jogos em tempo real, jogos sociais, jogos mobile, etc., de todos os tamanhos.
## Como construir um sistema com Nano
Uma aplicação Nano é uma coleção de componentes, e um componente é um conjunto de handlers. Ao registrar um componente no Nano, ele registra todos os métodos que podem ser convertidos em handlers no contêiner de serviços do Nano. Os serviços são acessados por `Component.Handler`, e o handler é chamado quando um cliente faz uma requisição. O handler recebe dois parâmetros ao tratar uma mensagem:
- `*session.Session`: corresponde a um cliente que faz essa requisição ou notificação.
- `*protocol.FooBar`: o payload da requisição.
Após processar a lógica, você pode responder ou enviar mensagens ao cliente via `session.Response(payload)` e `session.Push('eventName', payload)`, ou retornar um erro quando dados inesperados forem recebidos.
Nano inclui uma solução de sistema distribuído integrada, facilitando a criação de servidores de jogos distribuídos. Veja a demonstração de chat distribuído no diretório examples/cluster. Você pode iniciar um grupo de aplicações Nano como agentes para despachar mensagens para servidores de backend.
Para tarefas assíncronas, Nano fornece `nano.Invoke` para tratar resultados na goroutine lógica principal, como mostrado no exemplo.
## Documentos
- Inglês: primeiros passos, compressão de rotas, protocolo de comunicação, padrões de projeto, referência da API (servidor), integração com Lua (incompleto).
- 简体中文: 如何构建你的第一个nano应用, 路由压缩, 通信协议, API参考(服务器), 如何将lua脚本集成到nano组件中(未完成).
## Recursos
- Clientes JavaScript: nano-websocket-client, nano-egret-client.
- TypeScript/cocos-creator: nano-client-ts.
- Demos: sala de chat em 100 linhas, demo tadpole e um projeto completo de Sichuan Mahjong (nanoserver).
## Comunidade
- O grupo QQ está cheio; contate via WeChat `gsw_945` (observe `nano加群`).
- Reddit: nanolabs.
## Casos de sucesso
- 空来血战 (fir.im/tios).
## Versão do Go
> go1.8
## Instalação
```bash
go get github.com/lonng/nano
# dependências
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
Baixe o protoc em https://github.com/protocolbuffers/protobuf/releases, depois instale protoc-gen-go e protoc-gen-go-grpc, e delve.
## Teste
```bash
go test -v ./...
```
## Benchmark
Exemplo: PingPong no Windows 10, i5-6500 3.2GHz 4 Núcleos/1000-Concorrente => IOPS 11W (Média). Execute com `cd ./benchmark/io && go test -v -tags "benchmark"`.
## Licença
Licença MIT.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.