server.go 725 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package agent_server
  2. import (
  3. "github.com/gorilla/websocket"
  4. "log"
  5. "net/http"
  6. "nginx-ui/server/models"
  7. )
  8. var upgrader = websocket.Upgrader{
  9. ReadBufferSize: 4096,
  10. WriteBufferSize: 4096,
  11. }
  12. type Server struct {
  13. }
  14. func NewServer() *Server {
  15. go AgentHub.run()
  16. return &Server{}
  17. }
  18. func SetMessageHandler(key string, handler func(c *WsClient, message *models.AgentData) (interface{}, error)) {
  19. AgentHub.SetMessageHandler(key, handler)
  20. }
  21. func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
  22. conn, err := upgrader.Upgrade(w, r, nil)
  23. if err != nil {
  24. log.Println(err)
  25. return
  26. }
  27. token := r.Header.Get("Token")
  28. client := NewWsClient(token, conn)
  29. AgentHub.register <- client
  30. go client.readPump()
  31. }