server/server.go (34 lines of code) (raw):

package server import ( "fmt" "log" "net/http" "github.com/gorilla/mux" "gitlab.com/gitlab-org/webide-file-sync/websocketserver" ) type Server struct { port int websocketServer *websocketserver.Server httpServer *http.Server } // New returns a new Server func New(port int, origins []string) (*Server, error) { server, err := websocketserver.NewServer(origins, websocketserver.DefaultPongWait) if err != nil { return nil, err } return &Server{port, server, nil}, nil } // Serve starts the websocket server func (s *Server) Serve() error { // start processing the message queue router := mux.NewRouter() router.HandleFunc("/", s.websocketServer.ServeHTTP) s.httpServer = &http.Server{Addr: fmt.Sprintf(":%d", s.port), Handler: router} log.Println("Starting server in port", s.port, "...") return s.httpServer.ListenAndServe() } // Close stops the http server and the websocket server func (s *Server) Close() error { defer s.websocketServer.Close() return s.httpServer.Close() } // EventServer returns the current websocket server func (s *Server) EventServer() *websocketserver.Server { return s.websocketServer }