Input box, sidebar, ws connection
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user