package main import ( "fmt" "log" "net" "net/http" "github.com/webview/webview" ) var counter = 0 func handleRPC(w webview.WebView, data string) { switch { case data == "add": counter++ case data == "sub": counter-- } w.Eval(fmt.Sprintf(`counter.innerHTML = "Counter: " + %d;`, counter)) } func main() { url := startServer() w := webview.New(true) defer w.Destroy() w.SetTitle("example") w.SetSize(800, 600, webview.HintNone) w.Bind("add", handleRPC) w.Navigate(url) w.Run() } func startServer() string { ln, err := net.Listen("tcp", "127.0.0.1:0") if err != nil { log.Fatal(err) } go func() { defer ln.Close() http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte(indexHTML)) }) log.Fatal(http.Serve(ln, nil)) }() fmt.Println("http://" + ln.Addr().String()) return "http://" + ln.Addr().String() } var indexHTML = `
+1
-1
`