package main import ( "fmt" "github.com/rachel-mp4/lrcd" "net/http" "os" "time" ) func main() { messages := 0 pubchan := make(chan lrcd.PubEvent) go incrementMessageCount(pubchan, &messages) server, err := lrcd.NewServer(lrcd.WithLogging(os.Stdout, false), lrcd.WithWelcome("welcome to the beginning of the rest of your life"), lrcd.WithPubChannel(pubchan)) if err != nil { panic(err) } err = server.Start() if err != nil { panic(err) } fmt.Println("serving lrcd on localhost:8080") now := time.Now() http.ListenAndServe(":8080", guessIfUpgradeFail(server, now, &messages)) } func incrementMessageCount(pubchan chan lrcd.PubEvent, messages *int) { for range pubchan { *messages = *messages + 1 } } func guessIfUpgradeFail(server *lrcd.Server, now time.Time, messages *int) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { if r.Header.Get("Upgrade") != "websocket" { fmt.Fprintf(w, `~ live ~~ hi! i am an lrc server! ~ relay ~ you can look at my code at tangled.org/moth11.net/lrcd ~~ chat ~ & tangled.org/moth11.net/lrcdaemon i think you should connect to me with your lrc client (e.g. ttyxcvr) it'll be more fun for us both! (tangled.org/moth11.net/ttyxcvr) currently connected: %d live since: %s messages since last restart: %d`, server.Connected(), now.Format(time.RubyDate), *messages) } else { server.WSHandler()(w, r) } } }