websocket.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "net/http"
  6. "github.com/DeanThompson/ginpprof"
  7. "github.com/gin-gonic/gin"
  8. "github.com/google/uuid"
  9. "github.com/gorilla/websocket"
  10. "sikey.com/websocket/config"
  11. "sikey.com/websocket/repositories"
  12. "sikey.com/websocket/server"
  13. "sikey.com/websocket/utils/mysqlx"
  14. "sikey.com/websocket/utils/redisx"
  15. "sikey.com/websocket/utils/zlog"
  16. )
  17. var configFile = flag.String("f", "./etc/websocket.toml", "the config file")
  18. func main() {
  19. flag.Parse()
  20. config.MustLoadConfig(*configFile)
  21. // Zaplog init
  22. zlog.WithZapLogger(zlog.NewLogger(config.MustLoadLogger()))
  23. app := newApp()
  24. app.Run(fmt.Sprintf(":%d", config.Config.Port))
  25. }
  26. func newApp() *gin.Engine {
  27. app := gin.Default()
  28. ginpprof.Wrap(app)
  29. id := uuid.NewString()
  30. srv := &server.Server{
  31. ID: id,
  32. Upgrader: websocket.Upgrader{
  33. ReadBufferSize: config.Websocket.ReadBufferSize,
  34. WriteBufferSize: config.Websocket.WriteBufferSize,
  35. CheckOrigin: func(r *http.Request) bool {
  36. return true
  37. },
  38. },
  39. Hub: server.NewHub(id),
  40. Repositories: repositories.NewRepositories(mysqlx.ConnectMysql(), redisx.RedisConnect()),
  41. }
  42. app.GET("/websocket/endpoint", func(ctx *gin.Context) { srv.WebsocketHandler(ctx) })
  43. return app
  44. }