mirror of
https://github.com/speatzle/nfsense.git
synced 2025-09-13 15:19:08 +00:00
Setup Websocket and Routing
This commit is contained in:
parent
0232a5c4f4
commit
a3746e6082
7 changed files with 138 additions and 0 deletions
7
pkg/server/api.go
Normal file
7
pkg/server/api.go
Normal file
|
@ -0,0 +1,7 @@
|
|||
package server
|
||||
|
||||
import "net/http"
|
||||
|
||||
func HandleAPI(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
}
|
|
@ -12,9 +12,20 @@ import (
|
|||
)
|
||||
|
||||
var server http.Server
|
||||
var mux = http.NewServeMux()
|
||||
|
||||
func StartWebserver(conf *definitions.Config) {
|
||||
server.Addr = ":8080"
|
||||
server.Handler = mux
|
||||
|
||||
// Routing
|
||||
mux.HandleFunc("/login", HandleLogin)
|
||||
mux.HandleFunc("/logout", HandleLogout)
|
||||
mux.HandleFunc("/session", HandleSession)
|
||||
mux.HandleFunc("/api", HandleAPI)
|
||||
mux.HandleFunc("/ws", HandleWebsocketConnection)
|
||||
mux.HandleFunc("/", HandleWebinterface)
|
||||
|
||||
go func() {
|
||||
if err := server.ListenAndServe(); !errors.Is(err, http.ErrServerClosed) {
|
||||
slog.Error("Webserver error", err)
|
||||
|
|
15
pkg/server/session.go
Normal file
15
pkg/server/session.go
Normal file
|
@ -0,0 +1,15 @@
|
|||
package server
|
||||
|
||||
import "net/http"
|
||||
|
||||
func HandleLogin(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
}
|
||||
|
||||
func HandleLogout(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
}
|
||||
|
||||
func HandleSession(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
}
|
9
pkg/server/webinterface.go
Normal file
9
pkg/server/webinterface.go
Normal file
|
@ -0,0 +1,9 @@
|
|||
package server
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func HandleWebinterface(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
}
|
34
pkg/server/websocket.go
Normal file
34
pkg/server/websocket.go
Normal file
|
@ -0,0 +1,34 @@
|
|||
package server
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"golang.org/x/exp/slog"
|
||||
"nhooyr.io/websocket"
|
||||
"nhooyr.io/websocket/wsjson"
|
||||
)
|
||||
|
||||
func HandleWebsocketConnection(w http.ResponseWriter, r *http.Request) {
|
||||
c, err := websocket.Accept(w, r, nil)
|
||||
if err != nil {
|
||||
slog.Error("Accepting Websocket Connection", err)
|
||||
return
|
||||
}
|
||||
defer c.Close(websocket.StatusInternalError, "Unexpected Closing")
|
||||
|
||||
ctx, cancel := context.WithTimeout(r.Context(), time.Second*10)
|
||||
defer cancel()
|
||||
|
||||
var v interface{}
|
||||
err = wsjson.Read(ctx, c, &v)
|
||||
if err != nil {
|
||||
slog.Error("Reading Websocket Message", err)
|
||||
return
|
||||
}
|
||||
|
||||
slog.Info("received websocket msg", "msg", v)
|
||||
|
||||
c.Close(websocket.StatusNormalClosure, "")
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue