Input box, sidebar, ws connection

This commit is contained in:
metacryst
2025-10-03 11:44:00 -05:00
parent 989dbd88a0
commit d02103a0bc
16 changed files with 360 additions and 56 deletions

View File

@@ -11,10 +11,17 @@ import (
// "runtime/debug"
"strings"
"github.com/gorilla/websocket"
"github.com/golang-jwt/jwt/v5"
"github.com/rs/zerolog/log"
)
func isWebSocketRequest(r *http.Request) bool {
connHeader := strings.ToLower(r.Header.Get("Connection"))
upgradeHeader := strings.ToLower(r.Header.Get("Upgrade"))
return strings.Contains(connHeader, "upgrade") && upgradeHeader == "websocket"
}
func main() {
config.SetConfiguration()
logger.ConfigureLogger()
@@ -39,13 +46,17 @@ func main() {
if(loggedIn(w, r)) {
log.Info().Msg("logged")
if isWebSocketRequest(r) {
handleWebSocket(w, r)
return
}
handleSite(w, r)
} else {
handlePublic(w, r)
}
})
log.Info().Msgf("Server starting on http://localhost: %s", config.PORT)
log.Info().Msgf("Server starting on http://localhost:%s", config.PORT)
err = http.ListenAndServe(":"+config.PORT, nil)
if err != nil {
log.Fatal().Msgf("failed to start server: %v", err)
@@ -144,4 +155,37 @@ func loggedIn(w http.ResponseWriter, r *http.Request) bool {
}
return true
}
var upgrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
return true // In production, validate the origin!
},
}
func handleWebSocket(w http.ResponseWriter, r *http.Request) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
fmt.Println("WebSocket upgrade failed:", err)
http.Error(w, "WebSocket upgrade failed", http.StatusBadRequest)
return
}
defer conn.Close()
fmt.Println("WebSocket connection established")
for {
msgType, msg, err := conn.ReadMessage()
if err != nil {
fmt.Println("Read error:", err)
break
}
fmt.Printf("Received: %s\n", msg)
if err := conn.WriteMessage(msgType, msg); err != nil {
fmt.Println("Write error:", err)
break
}
}
}