77 "evolve/util"
88 "fmt"
99 "net/http"
10- "os"
1110 "strings"
1211 "time"
1312
@@ -33,41 +32,17 @@ type redisLogPayload struct {
3332 RunID string `json:"runId"` // From EOF message.
3433}
3534
36- // GetRedisClient initializes a Redis client.
37- func GetRedisClient (logger util.Logger ) (* redis.Client , error ) {
38- redisURL := os .Getenv ("REDIS_URL" )
39- if redisURL == "" {
40- redisURL = "redis://localhost:6379/0"
41- logger .Warn (fmt .Sprintf ("REDIS_URL not set, using default: %s" , redisURL ))
42- }
43- opts , err := redis .ParseURL (redisURL )
44- if err != nil {
45- logger .Error (fmt .Sprintf ("Failed to parse REDIS_URL '%s': %v" , redisURL , err ))
46- return nil , err
47- }
48- rdb := redis .NewClient (opts )
49- ctx , cancel := context .WithTimeout (context .Background (), 5 * time .Second )
50- defer cancel ()
51- _ , err = rdb .Ping (ctx ).Result ()
52- if err != nil {
53- logger .Error (fmt .Sprintf ("Failed to connect to Redis at %s: %v" , opts .Addr , err ))
54- return nil , err
55- }
56- logger .Info (fmt .Sprintf ("Successfully connected to Redis at %s" , opts .Addr ))
57- return rdb , nil
58- }
59-
6035// GetSSEHandler returns an HTTP handler
6136// for Server-Sent Events (SSE) using Redis Streams.
62- func GetSSEHandler (logger util.Logger , redisClient * redis. Client ) http.HandlerFunc {
63- if redisClient == nil {
37+ func GetSSEHandler (logger util.Logger ) http.HandlerFunc {
38+ if util . RedisClient == nil {
6439 logger .Error ("GetSSEHandler requires a non-nil Redis client" )
6540 return func (w http.ResponseWriter , r * http.Request ) {
6641 http .Error (w , "Internal Server Error: Redis client not configured" , http .StatusInternalServerError )
6742 }
6843 }
6944 return func (w http.ResponseWriter , r * http.Request ) {
70- serveSSEWithStream (logger , redisClient , w , r ) // Call the new function
45+ serveSSEWithStream (logger , w , r ) // Call the new function
7146 }
7247}
7348
@@ -93,7 +68,7 @@ func sendSSEData(w http.ResponseWriter, rc *http.ResponseController, payload str
9368}
9469
9570// serveSSEWithStream handles the SSE stream for a given run ID.
96- func serveSSEWithStream (logger util.Logger , redisClient * redis. Client , w http.ResponseWriter , r * http.Request ) {
71+ func serveSSEWithStream (logger util.Logger , w http.ResponseWriter , r * http.Request ) {
9772 ctx := r .Context ()
9873 logger .Info ("[SSE Stream Handler] Entered serveSSEWithStream" )
9974
@@ -174,7 +149,7 @@ func serveSSEWithStream(logger util.Logger, redisClient *redis.Client, w http.Re
174149 for {
175150 // Use XRead to get batches of historical data
176151 // We don't block here, just read what's available.
177- cmd := redisClient .XRead (ctx , & redis.XReadArgs {
152+ cmd := util . RedisClient .XRead (ctx , & redis.XReadArgs {
178153 Streams : []string {redisStreamName , lastProcessedID },
179154 Count : streamReadCount ,
180155 })
@@ -251,7 +226,7 @@ func serveSSEWithStream(logger util.Logger, redisClient *redis.Client, w http.Re
251226 }
252227
253228 // logger.Info(fmt.Sprintf("[SSE Stream Handler] Blocking read on stream '%s' from ID: %s", redisStreamName, lastProcessedID))
254- cmd := redisClient .XRead (ctx , & redis.XReadArgs {
229+ cmd := util . RedisClient .XRead (ctx , & redis.XReadArgs {
255230 Streams : []string {redisStreamName , lastProcessedID },
256231 Count : streamReadCount ,
257232 Block : blockTimeout ,
0 commit comments