Cet exemple montre comment remplacer quelques blocs lors d'un événement, par exemple "post avec l'identifiant 1 modifié" ( post-1-changed ) et déclencher le chargement du contenu via une requête ajax sur l'événement "chatter".
package main import ( "fmt" "net/http" "time" "github.com/r3labs/sse/v2" ) func main() { server := sse.New() _ = server.CreateStream("messages") mux := http.NewServeMux() mux.HandleFunc("/events", func(w http.ResponseWriter, r *http.Request) { // la security token := r.URL.Query().Get("token") if token != "secret" { http.Error(w, "invalid token", http.StatusUnauthorized) return } go func() { <-r.Context().Done() println("The client is disconnected here") return }() server.ServeHTTP(w, r) }) mux.HandleFunc("/chatroom", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte(`Hello from chat room`)) }) mux.HandleFunc("/index", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte(`oneoneoneone`)) }) go func() { i := 0 for { i++ time.Sleep(1 * time.Second) server.TryPublish("messages", &sse.Event{ ID: []byte(fmt.Sprintf("%d", i)), Event: []byte("post-1-changed"), Data: []byte(`chat body reloadedHello from sse ` + fmt.Sprintf("%d", i) + ``), }) server.TryPublish("messages", &sse.Event{ ID: []byte(fmt.Sprintf("%d", i)), Event: []byte("notifications"), Data: []byte(`Hello from post 2 sse ` + fmt.Sprintf("%d", i) + ``), }) server.TryPublish("messages", &sse.Event{ ID: []byte(fmt.Sprintf("%d", i)), Event: []byte("chatter"), Data: []byte(``), }) server.EventTTL = 5 * time.Second } }() http.ListenAndServe(":9999", mux) }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!