RapidGo
No results found

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)
    }
})