mirror of
https://github.com/jwetzell/showbridge-go.git
synced 2026-04-26 21:05:30 +00:00
mess around with support WASM builds
This commit is contained in:
121
app/demo/main.go
Normal file
121
app/demo/main.go
Normal file
@@ -0,0 +1,121 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
|
||||
"github.com/jwetzell/showbridge-go"
|
||||
"github.com/jwetzell/showbridge-go/internal/config"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
||||
slog.SetLogLoggerLevel(slog.LevelDebug)
|
||||
slog.SetDefault(slog.New(slog.NewTextHandler(NewLogWriter("logs"), &slog.HandlerOptions{
|
||||
Level: slog.LevelDebug,
|
||||
})))
|
||||
|
||||
router, moduleConfigErrors, routeConfigErrors := showbridge.NewRouter(config.Config{
|
||||
Api: config.ApiConfig{
|
||||
Enabled: false,
|
||||
Port: 0,
|
||||
},
|
||||
Modules: []config.ModuleConfig{
|
||||
{
|
||||
Id: "timer",
|
||||
Type: "time.interval",
|
||||
Params: map[string]any{
|
||||
"duration": 1000,
|
||||
},
|
||||
},
|
||||
{
|
||||
Id: "button1",
|
||||
Type: "web.onclick",
|
||||
Params: map[string]any{
|
||||
"id": "button1",
|
||||
},
|
||||
},
|
||||
{
|
||||
Id: "button2",
|
||||
Type: "web.onclick",
|
||||
Params: map[string]any{
|
||||
"id": "button2",
|
||||
},
|
||||
},
|
||||
},
|
||||
Routes: []config.RouteConfig{
|
||||
{
|
||||
Input: "timer",
|
||||
Processors: []config.ProcessorConfig{
|
||||
{
|
||||
Type: "debug.log",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Input: "button1",
|
||||
Processors: []config.ProcessorConfig{
|
||||
{
|
||||
Type: "string.create",
|
||||
Params: map[string]any{
|
||||
"template": "{{.Payload.UnixMilli}}",
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: "debug.log",
|
||||
},
|
||||
{
|
||||
Type: "web.set",
|
||||
Params: map[string]any{
|
||||
"id": "output1",
|
||||
"property": "innerText",
|
||||
"value": "Button1 Pressed @ {{.Payload}}",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Input: "button2",
|
||||
Processors: []config.ProcessorConfig{
|
||||
{
|
||||
Type: "string.create",
|
||||
Params: map[string]any{
|
||||
"template": "{{.Payload.UnixMilli}}",
|
||||
},
|
||||
},
|
||||
{
|
||||
Type: "debug.log",
|
||||
},
|
||||
{
|
||||
Type: "web.set",
|
||||
Params: map[string]any{
|
||||
"id": "output2",
|
||||
"property": "innerText",
|
||||
"value": "Button2 Pressed @ {{.Payload}}",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
if len(moduleConfigErrors) > 0 {
|
||||
for _, err := range moduleConfigErrors {
|
||||
println("Module config error:", err.Error)
|
||||
}
|
||||
}
|
||||
|
||||
if len(routeConfigErrors) > 0 {
|
||||
for _, err := range routeConfigErrors {
|
||||
println("Route config error:", err.Error)
|
||||
}
|
||||
}
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
go func() {
|
||||
router.Start(ctx)
|
||||
fmt.Println("router stopped")
|
||||
}()
|
||||
<-ctx.Done()
|
||||
}
|
||||
Reference in New Issue
Block a user