ProtoSocket é uma biblioteca Go para comunicação WebSocket com suporte a Protocol Buffers, oferecendo recursos avançados de resiliência, monitoramento e segurança.
-
🔒 Segurança
- Rate limiting
- Firewall
- Autenticação
- Criptografia
- Validação de mensagens
-
💪 Resiliência
- Circuit breaker
- Retry automático
- Reconexão automática
- Timeout handling
- Buffering de mensagens
-
📊 Monitoramento
- Health checks
- Métricas
- Tracing
- Logging estruturado
- Status em tempo real
-
🔌 Extensibilidade
- Sistema de plugins
- Handlers customizáveis
- Configuração dinâmica
- Middleware support
-
🚀 Performance
- Protocol Buffers
- Message sequencing
- Priorização de mensagens
- Connection pooling
go get github.com/mendes113/protosocketpackage main
import (
"log"
"github.com/mendes113/protosocket"
"github.com/mendes113/protosocket/proto"
)
func main() {
// Inicializa o cliente
client := protosocket.NewClient("ws://localhost:8080")
defer client.Close()
// Configura handler de mensagens
client.On("chat", func(msg proto.Message, c *protosocket.Client) {
log.Printf("Mensagem recebida: %s", string(msg.Data))
})
// Envia mensagem
msg := &proto.Message{
Type: "chat",
Data: []byte("Olá!"),
Metadata: map[string]string{
"sender": "exemplo",
},
}
if err := client.Emit("chat", msg); err != nil {
log.Printf("Erro: %v", err)
}
select {}
}O diretório examples/ contém exemplos completos de uso:
sender/- Cliente que envia mensagens periodicamentereceiver/- Cliente que recebe e responde mensagensadvanced_client.go- Cliente com recursos avançados
Para mais detalhes sobre cada componente:
- Fork o projeto
- Crie sua feature branch (
git checkout -b feature/MinhaFeature) - Commit suas mudanças (
git commit -am 'Adiciona nova feature') - Push para a branch (
git push origin feature/MinhaFeature) - Crie um Pull Request
Este projeto está licenciado sob a MIT License - veja o arquivo LICENSE para detalhes.