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  }