Enha: remove extra connection
This commit is contained in:
		| @@ -57,7 +57,7 @@ func (broker *Broker) ServeHTTP(w http.ResponseWriter, r *http.Request) { | |||||||
| 	w.Header().Set("Access-Control-Allow-Credentials", "true") | 	w.Header().Set("Access-Control-Allow-Credentials", "true") | ||||||
| 	ctx := r.Context() | 	ctx := r.Context() | ||||||
| 	// browser can close sse on its own; ping every 2s to prevent | 	// browser can close sse on its own; ping every 2s to prevent | ||||||
| 	heartbeat := time.NewTicker(2 * time.Second) | 	heartbeat := time.NewTicker(8 * time.Second) | ||||||
| 	defer heartbeat.Stop() | 	defer heartbeat.Stop() | ||||||
| 	for { | 	for { | ||||||
| 		select { | 		select { | ||||||
| @@ -67,13 +67,20 @@ func (broker *Broker) ServeHTTP(w http.ResponseWriter, r *http.Request) { | |||||||
| 			return | 			return | ||||||
| 		case event := <-broker.Notifier: | 		case event := <-broker.Notifier: | ||||||
| 			broker.log.Debug("got event", "event", event) | 			broker.log.Debug("got event", "event", event) | ||||||
|  | 			for i := 0; i < 10; i++ { // Repeat 3 times | ||||||
| 				_, err := fmt.Fprintf(w, "event: %s\ndata: %s\n\n", event.EventName, event.Payload) | 				_, err := fmt.Fprintf(w, "event: %s\ndata: %s\n\n", event.EventName, event.Payload) | ||||||
| 				if err != nil { | 				if err != nil { | ||||||
| 				broker.log.Error("failed to write event", "error", err) | 					broker.log.Error("write failed", "error", err) | ||||||
| 				// Client disconnected |  | ||||||
| 					return | 					return | ||||||
| 				} | 				} | ||||||
| 				w.(http.Flusher).Flush() | 				w.(http.Flusher).Flush() | ||||||
|  | 				// Short delay between sends (non-blocking) | ||||||
|  | 				select { | ||||||
|  | 				case <-time.After(20 * time.Millisecond): // Adjust delay as needed | ||||||
|  | 				case <-ctx.Done(): | ||||||
|  | 					return | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
| 		case <-heartbeat.C: | 		case <-heartbeat.C: | ||||||
| 			// Send SSE heartbeat comment | 			// Send SSE heartbeat comment | ||||||
| 			if _, err := fmt.Fprint(w, ":\n\n"); err != nil { | 			if _, err := fmt.Fprint(w, ":\n\n"); err != nil { | ||||||
|   | |||||||
| @@ -53,7 +53,7 @@ | |||||||
|   </div> |   </div> | ||||||
|   <hr/> |   <hr/> | ||||||
|   <div class="grid grid-cols-1 md:grid-cols-5 md:gap-4"> |   <div class="grid grid-cols-1 md:grid-cols-5 md:gap-4"> | ||||||
|     <div hx-get="/actionhistory" hx-trigger="sse:backlog_{{.Room.ID}}" class="md:col-span-1"> |     <div hx-get="/actionhistory" class="md:col-span-1"> | ||||||
|       {{template "actionhistory" .Room.ActionHistory}} |       {{template "actionhistory" .Room.ActionHistory}} | ||||||
|     </div> |     </div> | ||||||
|     <div id="cardtable" class="md:col-span-3"> |     <div id="cardtable" class="md:col-span-3"> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Grail Finder
					Grail Finder