Add full monorepo: virtual-banker, backend, frontend, docs, scripts, deployment
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
35
backend/api/realtime.go
Normal file
35
backend/api/realtime.go
Normal file
@@ -0,0 +1,35 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user