mirror of
https://github.com/langhuihui/monibuca.git
synced 2025-10-06 07:06:54 +08:00
72 lines
2.1 KiB
Markdown
72 lines
2.1 KiB
Markdown
# gRPC Service Mechanism
|
|
|
|
Monibuca provides gRPC service support, allowing plugins to offer services via the gRPC protocol. This document explains the implementation mechanism and usage of gRPC services.
|
|
|
|
## Service Registration Mechanism
|
|
|
|
### 1. Service Registration
|
|
|
|
Plugins need to pass ServiceDesc and Handler when calling `InstallPlugin` to register gRPC services:
|
|
|
|
```go
|
|
// Example: Registering gRPC service in a plugin
|
|
type MyPlugin struct {
|
|
pb.UnimplementedApiServer
|
|
m7s.Plugin
|
|
}
|
|
|
|
var _ = m7s.InstallPlugin[MyPlugin](
|
|
m7s.DefaultYaml(`your yaml config here`),
|
|
&pb.Api_ServiceDesc, // gRPC service descriptor
|
|
pb.RegisterApiHandler, // gRPC gateway handler
|
|
// ... other parameters
|
|
)
|
|
```
|
|
|
|
### 2. Proto File Specifications
|
|
|
|
All gRPC services must follow these Proto file specifications:
|
|
|
|
- Response structs must include code, message, and data fields
|
|
- Error handling should return errors directly, without manually setting code and message
|
|
- Run `sh scripts/protoc.sh` to generate pb files after modifying global.proto
|
|
- Run `sh scripts/protoc.sh {pluginName}` to generate corresponding pb files after modifying plugin-related proto files
|
|
|
|
## Service Implementation Mechanism
|
|
|
|
### 1. Server Configuration
|
|
|
|
gRPC services use port settings from the global TCP configuration:
|
|
|
|
```yaml
|
|
global:
|
|
tcp:
|
|
listenaddr: :8080 # gRPC service listen address and port
|
|
listentls: :8443 # gRPC TLS service listen address and port (if enabled)
|
|
```
|
|
|
|
Configuration items include:
|
|
- Listen address and port settings (specified in global TCP configuration)
|
|
- TLS/SSL certificate configuration (if enabled)
|
|
|
|
### 2. Error Handling
|
|
|
|
Error handling follows these principles:
|
|
|
|
- Return errors directly, no need to manually set code and message
|
|
- The system automatically handles errors and sets response format
|
|
|
|
## Best Practices
|
|
|
|
1. Service Definition
|
|
- Clear service interface design
|
|
- Appropriate method naming
|
|
- Complete interface documentation
|
|
|
|
2. Performance Optimization
|
|
- Use streaming for large data
|
|
- Set reasonable timeout values
|
|
|
|
3. Security Considerations
|
|
- Enable TLS encryption as needed
|
|
- Implement necessary access controls |