github.com/cantara/gober@v0.18.8/websocket/example/server/server.go (about) 1 package main 2 3 import ( 4 "context" 5 "time" 6 7 log "github.com/cantara/bragi/sbragi" 8 "github.com/cantara/gober/webserver" 9 "github.com/cantara/gober/websocket" 10 "github.com/cantara/gober/websocket/example" 11 "github.com/gin-gonic/gin" 12 ) 13 14 func main() { 15 nl, err := log.NewDebugLogger() 16 if err != nil { 17 log.WithError(err).Fatal("while creating new logger") 18 } 19 nl.SetDefault() 20 serv, err := webserver.Init(4123, true) 21 if err != nil { 22 log.WithError(err).Fatal("while initing webserver") 23 return 24 } 25 26 websocket.Serve[example.PongData](serv.API(), "/ping", nil, 27 func(reader <-chan example.PongData, writer chan<- websocket.Write[example.PongData], params gin.Params, ctx context.Context) { 28 defer close(writer) 29 for read := range reader { 30 time.Sleep(read.Sleep) 31 errChan := make(chan error, 1) 32 writer <- websocket.Write[example.PongData]{ 33 Data: read, 34 Err: errChan, 35 } 36 err := <-errChan 37 if err != nil { 38 log.WithError(err).Error("while writing pong response") 39 return 40 } 41 } 42 }, 43 ) 44 45 serv.Run() 46 }