initial commit
This commit is contained in:
		
						commit
						35cf6f3559
					
				
							
								
								
									
										3
									
								
								go.mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								go.mod
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
module github.com/hook-lord/confetti-trigger
 | 
			
		||||
 | 
			
		||||
go 1.23.1
 | 
			
		||||
							
								
								
									
										51
									
								
								main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								main.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,51 @@
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"log"
 | 
			
		||||
	"net/http"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var eventChan = make(chan string)
 | 
			
		||||
 | 
			
		||||
func SSEHandler(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	w.Header().Set("Content-Type", "text/event-stream")
 | 
			
		||||
	w.Header().Set("Cache-Control", "no-cache")
 | 
			
		||||
	w.Header().Set("Connection", "keep-alive")
 | 
			
		||||
	w.Header().Set("Access-Control-Allow-Origin", "*")
 | 
			
		||||
	w.Header().Set("Access-Control-Allow-Headers", "Content-Type")
 | 
			
		||||
	w.Header().Set("Access-Control-Allow-Methods", "GET")
 | 
			
		||||
 | 
			
		||||
	clientChan := make(chan string)
 | 
			
		||||
 | 
			
		||||
	go func() {
 | 
			
		||||
		for event := range clientChan {
 | 
			
		||||
			fmt.Fprintf(w, "data: %s\n\n", event)
 | 
			
		||||
			w.(http.Flusher).Flush()
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
 | 
			
		||||
	for {
 | 
			
		||||
		select {
 | 
			
		||||
		case event := <-eventChan:
 | 
			
		||||
			clientChan <- event
 | 
			
		||||
		case <-r.Context().Done():
 | 
			
		||||
			close(clientChan)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TriggerHandler(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	eventChan <- "Confetti Triggered!"
 | 
			
		||||
	w.WriteHeader(http.StatusOK)
 | 
			
		||||
	w.Write([]byte("Confetti Triggered"))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	http.HandleFunc("/events", SSEHandler)
 | 
			
		||||
	http.HandleFunc("/trigger", TriggerHandler)
 | 
			
		||||
 | 
			
		||||
	log.Println("Server running on port 8080")
 | 
			
		||||
	log.Fatal(http.ListenAndServe(":8080", nil))
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user