mirror of
https://github.com/wailsapp/wails.git
synced 2026-03-15 23:25:49 +01:00
* feat(v3): add server mode for headless HTTP deployment Server mode allows Wails applications to run as pure HTTP servers without native GUI dependencies. Enable with `-tags server` build tag. Features: - HTTP server with configurable host/port via ServerOptions - WAILS_SERVER_HOST and WAILS_SERVER_PORT env var overrides - WebSocket event broadcasting to connected browsers - Browser clients represented as BrowserWindow (Window interface) - Health check endpoint at /health - Graceful shutdown with configurable timeout - Docker support with Dockerfile.server template and tasks Build and run: wails3 task build:server wails3 task run:server wails3 task build:docker wails3 task run:docker Documentation at docs/guides/server-build.mdx Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(v3): add server mode for headless HTTP deployment Server mode allows Wails applications to run as pure HTTP servers without native GUI dependencies. Enable with `-tags server` build tag. Features: - HTTP server with configurable host/port via ServerOptions - WAILS_SERVER_HOST and WAILS_SERVER_PORT env var overrides - WebSocket event broadcasting to connected browsers - Browser clients represented as BrowserWindow (Window interface) - Health check endpoint at /health - Graceful shutdown with configurable timeout - Docker support with Dockerfile.server template and tasks Build and run: wails3 task build:server wails3 task run:server wails3 task build:docker wails3 task run:docker Documentation at docs/guides/server-build.mdx Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: address CodeRabbit review comments - Fix corrupted test file with embedded terminal output - Fix module name mismatch in gin-routing (was gin-example) - Fix replace directive version mismatch in gin-service - Fix placeholder module name in ios example (was changeme) - Fix Dockerfile COPY path to work from both build contexts - Fix bare URL in README (MD034 compliance) - Fix comment accuracy in getScreens (returns error, not empty slice) - Remove deprecated docker-compose version field - Add port documentation in Taskfile template Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: address CodeRabbit review comments - Add note about healthcheck wget not being available in distroless images - Add !server build constraint to menu_windows.go and menu_darwin.go - Downgrade window-visibility-test go.mod from 1.25 to 1.24 to match CI Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
package application
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/wailsapp/wails/v3/pkg/errs"
|
|
)
|
|
|
|
const (
|
|
EventsEmit = 0
|
|
)
|
|
|
|
var eventsMethodNames = map[int]string{
|
|
EventsEmit: "Emit",
|
|
}
|
|
|
|
func (m *MessageProcessor) processEventsMethod(req *RuntimeRequest, window Window) (any, error) {
|
|
switch req.Method {
|
|
case EventsEmit:
|
|
var event CustomEvent
|
|
var options struct {
|
|
Name *string `json:"name"`
|
|
Data json.RawMessage `json:"data"`
|
|
}
|
|
|
|
err := req.Args.ToStruct(&options)
|
|
if err != nil {
|
|
return nil, errs.WrapInvalidEventsCallErrorf(err, "error parsing event")
|
|
}
|
|
if options.Name == nil {
|
|
return nil, errs.NewInvalidEventsCallErrorf("missing event name")
|
|
}
|
|
|
|
data, err := decodeEventData(*options.Name, options.Data)
|
|
if err != nil {
|
|
return nil, errs.WrapInvalidEventsCallErrorf(err, "error parsing event data")
|
|
}
|
|
|
|
event.Name = *options.Name
|
|
event.Data = data
|
|
if window != nil {
|
|
event.Sender = window.Name()
|
|
}
|
|
globalApplication.Event.EmitEvent(&event)
|
|
|
|
return event.IsCancelled(), nil
|
|
default:
|
|
return nil, errs.NewInvalidEventsCallErrorf("unknown method: %d", req.Method)
|
|
}
|
|
}
|