package server
import (
"github.com/go-mizu/mizu"
"github.com/go-mizu/mizu/live"
"github.com/go-mizu/mizu/view"
)
type App struct {
cfg Config
app *mizu.App
engine *view.Engine
liveServer *live.Server
}
func New(cfg Config) *App {
a := &App{cfg: cfg}
a.app = mizu.New()
// View engine for templates
a.engine = view.New(view.Options{
Root: "views",
Layout: "layouts/main",
})
a.app.Use(a.engine.Middleware())
// Live server for WebSocket
a.liveServer = live.NewServer(live.Options{
OnConnect: a.onConnect,
OnMessage: a.onMessage,
})
a.routes()
return a
}
func (a *App) onConnect(ctx context.Context, s *live.Session) error {
// Initialize session state
return nil
}
func (a *App) onMessage(ctx context.Context, s *live.Session, topic string, data []byte) {
// Handle incoming messages
}