Service Modes
Run web, API, WebSocket, and worker services independently or combined.
RapidGo supports running different service types on the same or separate processes.
Available Modes
| Mode | Flag | Description |
|---|---|---|
web |
ModeWeb |
HTML pages, templates, sessions |
api |
ModeAPI |
JSON API endpoints |
ws |
ModeWS |
WebSocket connections |
worker |
ModeWorker |
Background job processing |
all |
All modes | Everything in one process |
Configuration
Set the mode via environment variable or CLI flag:
RAPIDGO_MODE=all
go run cmd/main.go serve --mode=api
Conditional Registration
Use mode checks to register services and routes conditionally:
cli.SetBootstrap(func(a *app.App, mode service.Mode) {
a.Register(&providers.ConfigProvider{})
if mode.Has(service.ModeWeb) || mode.Has(service.ModeAPI) {
a.Register(&providers.DatabaseProvider{})
}
if mode.Has(service.ModeWeb) {
a.Register(&providers.SessionProvider{})
}
})
cli.SetRoutes(func(r *router.Router, c *container.Container, mode service.Mode) {
if mode.Has(service.ModeWeb) {
routes.RegisterWeb(r)
}
if mode.Has(service.ModeAPI) {
routes.RegisterAPI(r)
}
if mode.Has(service.ModeWS) {
routes.RegisterWS(r)
}
})