J'utilise https://pkg.go.dev/golang.org/x/net/websocket pour créer un websocket côté serveur. Toutes les communications qui y transitent sont au format json. Mon code contient donc :
func wsHandler(ws *websocket.Conn) { var evnt event websocket.JSON.Receive(ws, &evnt) …
Cependant, cela bloque jusqu'à ce que le client ferme la connexion. Je sais que ce package websocket est antérieur au contexte (et je sais qu'il existe des packages websocket plus récents), mais quand même, n'y a-t-il vraiment aucun moyen d'attendre les images entrantes de manière non bloquante ?
Cela bloque jusqu'à ce que le client ferme la connexion.
Le moyen le plus simple de gérer les opérations de blocage simultanées est de leur donner une goroutine. Les goroutines, contrairement aux processus ou aux threads, sont essentiellement « gratuites ».
func wsHandler(ws *websocket.Conn) { go func() { var evnt event websocket.JSON.Receive(ws, &evnt) .... }() }
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!