Files
explorer-monorepo/virtual-banker/backend/api/realtime.go

36 lines
897 B
Go

package api
import (
"net/http"
"github.com/gorilla/mux"
)
// HandleRealtimeWebSocket handles WebSocket upgrade for realtime communication
func (s *Server) HandleRealtimeWebSocket(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
sessionID := vars["id"]
if sessionID == "" {
writeError(w, http.StatusBadRequest, "session_id is required", nil)
return
}
// Get session to validate
_, err := s.sessionManager.GetSession(r.Context(), sessionID)
if err != nil {
writeError(w, http.StatusUnauthorized, "invalid session", err)
return
}
// Upgrade to WebSocket
if s.realtimeGateway != nil {
if err := s.realtimeGateway.HandleWebSocket(w, r, sessionID); err != nil {
writeError(w, http.StatusInternalServerError, "failed to upgrade connection", err)
return
}
return
}
writeError(w, http.StatusServiceUnavailable, "realtime gateway not available", nil)
}