just a runnable instance of lrcd
at main 51 lines 1.5 kB view raw
1package main 2 3import ( 4 "fmt" 5 "github.com/rachel-mp4/lrcd" 6 "net/http" 7 "os" 8 "time" 9) 10 11func main() { 12 messages := 0 13 pubchan := make(chan lrcd.PubEvent) 14 go incrementMessageCount(pubchan, &messages) 15 server, err := lrcd.NewServer(lrcd.WithLogging(os.Stdout, false), lrcd.WithWelcome("welcome to the beginning of the rest of your life"), lrcd.WithPubChannel(pubchan)) 16 if err != nil { 17 panic(err) 18 } 19 err = server.Start() 20 if err != nil { 21 panic(err) 22 } 23 fmt.Println("serving lrcd on localhost:8080") 24 now := time.Now() 25 http.ListenAndServe(":8080", guessIfUpgradeFail(server, now, &messages)) 26} 27 28func incrementMessageCount(pubchan chan lrcd.PubEvent, messages *int) { 29 for range pubchan { 30 *messages = *messages + 1 31 } 32} 33 34func guessIfUpgradeFail(server *lrcd.Server, now time.Time, messages *int) http.HandlerFunc { 35 return func(w http.ResponseWriter, r *http.Request) { 36 if r.Header.Get("Upgrade") != "websocket" { 37 fmt.Fprintf(w, `~ live ~~ hi! i am an lrc server! 38~ relay ~ you can look at my code at tangled.org/moth11.net/lrcd 39~~ chat ~ & tangled.org/moth11.net/lrcdaemon 40 41i think you should connect to me with your lrc client (e.g. ttyxcvr) 42it'll be more fun for us both! (tangled.org/moth11.net/ttyxcvr) 43 44 currently connected: %d 45 live since: %s 46 messages since last restart: %d`, server.Connected(), now.Format(time.RubyDate), *messages) 47 } else { 48 server.WSHandler()(w, r) 49 } 50 } 51}