just a runnable instance of lrcd
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}