@@ -99,48 +99,48 @@ func (c *SSEMCPClient) Start(ctx context.Context) error {
9999// readSSE continuously reads the SSE stream and processes events.
100100// It runs until the connection is closed or an error occurs.
101101func (c * SSEMCPClient ) readSSE (reader io.ReadCloser ) {
102- defer reader .Close ()
103-
104- br := bufio .NewReader (reader )
105- var event , data string
106-
107- for {
108- line , err := br .ReadString ('\n' )
109- if err != nil {
110- if err == io .EOF {
111- // Process any pending event before exit
112- if event != "" && data != "" {
113- c .handleSSEEvent (event , data )
114- }
115- break
116- }
117- select {
118- case <- c .done :
119- return
120- default :
121- fmt .Printf ("SSE stream error: %v\n " , err )
122- return
123- }
124- }
125-
126- // Remove only newline markers
127- line = strings .TrimRight (line , "\r \n " )
128- if line == "" {
129- // Empty line means end of event
130- if event != "" && data != "" {
131- c .handleSSEEvent (event , data )
132- event = ""
133- data = ""
134- }
135- continue
136- }
137-
138- if strings .HasPrefix (line , "event:" ) {
139- event = strings .TrimSpace (strings .TrimPrefix (line , "event:" ))
140- } else if strings .HasPrefix (line , "data:" ) {
141- data = strings .TrimSpace (strings .TrimPrefix (line , "data:" ))
142- }
143- }
102+ defer reader .Close ()
103+
104+ br := bufio .NewReader (reader )
105+ var event , data string
106+
107+ for {
108+ line , err := br .ReadString ('\n' )
109+ if err != nil {
110+ if err == io .EOF {
111+ // Process any pending event before exit
112+ if event != "" && data != "" {
113+ c .handleSSEEvent (event , data )
114+ }
115+ break
116+ }
117+ select {
118+ case <- c .done :
119+ return
120+ default :
121+ fmt .Printf ("SSE stream error: %v\n " , err )
122+ return
123+ }
124+ }
125+
126+ // Remove only newline markers
127+ line = strings .TrimRight (line , "\r \n " )
128+ if line == "" {
129+ // Empty line means end of event
130+ if event != "" && data != "" {
131+ c .handleSSEEvent (event , data )
132+ event = ""
133+ data = ""
134+ }
135+ continue
136+ }
137+
138+ if strings .HasPrefix (line , "event:" ) {
139+ event = strings .TrimSpace (strings .TrimPrefix (line , "event:" ))
140+ } else if strings .HasPrefix (line , "data:" ) {
141+ data = strings .TrimSpace (strings .TrimPrefix (line , "data:" ))
142+ }
143+ }
144144}
145145
146146// handleSSEEvent processes SSE events based on their type.
0 commit comments