我使用 https://pkg.go.dev/golang.org/x/net/websocket 来创建服务器端 websocket。通过它进行的所有通信均采用 json 格式。因此,我的代码包含:
func wsHandler(ws *websocket.Conn) { var evnt event websocket.JSON.Receive(ws, &evnt) …
但是,这会阻塞,直到客户端关闭连接。我知道这个 websocket 包早于上下文(并且我知道有更新的 websocket 包),但仍然 – 真的没有办法以非阻塞方式等待传入帧吗?
这会阻塞,直到客户端关闭连接。
处理并发阻塞操作的最简单方法是给它们一个 goroutine。 goroutines 与进程或线程不同,本质上是“免费的”。
func wsHandler(ws *websocket.Conn) { go func() { var evnt event websocket.JSON.Receive(ws, &evnt) .... }() }
以上就是如何在 Go 中非阻塞地监听服务器端 websocket的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号