Saya menggunakan https://pkg.go.dev/golang.org/x/net/websocket untuk mencipta websocket sebelah pelayan. Semua komunikasi melaluinya adalah dalam format json. Jadi kod saya mengandungi:
func wsHandler(ws *websocket.Conn) { var evnt event websocket.JSON.Receive(ws, &evnt) …
Walau bagaimanapun, ini menghalang sehingga pelanggan menutup sambungan. Saya tahu pakej websocket ini mendahului konteks (dan saya tahu terdapat pakej websocket yang lebih baharu), tetapi masih - adakah benar-benar tiada cara untuk menunggu bingkai masuk tanpa menyekat?
Ini menyekat sehingga pelanggan menutup sambungan.
Cara paling mudah untuk mengendalikan operasi menyekat serentak adalah dengan memberi mereka goroutine. Goroutine, tidak seperti proses atau benang, pada asasnya "percuma".
func wsHandler(ws *websocket.Conn) { go func() { var evnt event websocket.JSON.Receive(ws, &evnt) .... }() }
Atas ialah kandungan terperinci Cara untuk mendengar soket web sebelah pelayan tanpa sekatan dalam Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!