Cara untuk mendengar soket web sebelah pelayan tanpa sekatan dalam Go

PHPz
Lepaskan: 2024-02-08 20:45:09
ke hadapan
421 orang telah melayarinya

如何在 Go 中非阻塞地监听服务器端 websocket

Kandungan soalan

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)
    …
Salin selepas log masuk

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?


Jawapan betul


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)
      ....
   }()
}
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!