123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- package agent_server
- import (
- "github.com/gorilla/websocket"
- "log"
- "net/http"
- "nginx-ui/server/models"
- )
- var upgrader = websocket.Upgrader{
- ReadBufferSize: 4096,
- WriteBufferSize: 4096,
- }
- type Server struct {
- hub *Hub
- }
- var AgentHub = newHub()
- func NewServer() *Server {
- go AgentHub.run()
- return &Server{
- hub: AgentHub,
- }
- }
- func SetMessageHandler(key string, handler func(c *WsClient, message *models.AgentData) (interface{}, error)) {
- AgentHub.SetMessageHandler(key, handler)
- }
- func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
- conn, err := upgrader.Upgrade(w, r, nil)
- if err != nil {
- log.Println(err)
- return
- }
- token := r.Header.Get("Token")
- client := &WsClient{
- Token: token,
- hub: s.hub,
- conn: conn,
- send: make(chan []byte, 1024),
- callbacks: make(map[string]chan *models.AgentData),
- }
- client.hub.register <- client
- go client.readPump()
- }
|