Return 404 for WS handler when session doesnt exist

This commit is contained in:
Marcos Lilljedahl
2017-07-31 18:20:27 -03:00
parent fa3b56ecfe
commit 7a49c557e0
4 changed files with 20 additions and 8 deletions

4
api.go
View File

@@ -41,8 +41,6 @@ func main() {
}
}()
server := handlers.Broadcast.GetHandler()
r := mux.NewRouter()
corsRouter := mux.NewRouter()
@@ -77,7 +75,7 @@ func main() {
http.ServeFile(rw, r, "www/sdk.js")
})
corsRouter.Handle("/sessions/{sessionId}/ws/", server)
corsRouter.HandleFunc("/sessions/{sessionId}/ws/", handlers.WebSocket)
r.Handle("/metrics", promhttp.Handler())
// Generic routes

View File

@@ -12,7 +12,7 @@ import (
)
var core pwd.PWDApi
var Broadcast pwd.BroadcastApi
var broadcast pwd.BroadcastApi
func Bootstrap() {
c, err := client.NewEnvClient()
@@ -22,18 +22,18 @@ func Bootstrap() {
d := docker.NewDocker(c)
Broadcast, err = pwd.NewBroadcast(WS, WSError)
broadcast, err = pwd.NewBroadcast(WS, WSError)
if err != nil {
log.Fatal(err)
}
t := pwd.NewScheduler(Broadcast, d)
t := pwd.NewScheduler(broadcast, d)
s, err := storage.NewFileStorage(config.SessionsFile)
if err != nil && !os.IsNotExist(err) {
log.Fatal("Error decoding sessions from disk ", err)
}
core = pwd.NewPWD(d, t, Broadcast, s)
core = pwd.NewPWD(d, t, broadcast, s)
}

View File

@@ -21,7 +21,7 @@ func Ping(rw http.ResponseWriter, req *http.Request) {
return
}
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Microsecond)
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
if _, err := c.Info(ctx); err != nil && err == context.DeadlineExceeded {

View File

@@ -3,6 +3,7 @@ package handlers
import (
"fmt"
"log"
"net/http"
"github.com/googollee/go-socket.io"
"github.com/gorilla/mux"
@@ -52,3 +53,16 @@ func WS(so socketio.Socket) {
func WSError(so socketio.Socket) {
log.Println("error ws")
}
func WebSocket(rw http.ResponseWriter, req *http.Request) {
vars := mux.Vars(req)
sessionId := vars["sessionId"]
session := core.SessionGet(sessionId)
if session == nil {
rw.WriteHeader(http.StatusNotFound)
return
}
broadcast.GetHandler().ServeHTTP(rw, req)
}