登录
首页 >  Golang >  Go问答

使用非阻塞方式在 Go 中监听服务器端 WebSocket 连接

来源:stackoverflow

时间:2024-02-06 17:03:18 348浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《使用非阻塞方式在 Go 中监听服务器端 WebSocket 连接》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

我使用 https://pkg.go.dev/golang.org/x/net/websocket 来创建服务器端 websocket。通过它进行的所有通信均采用 json 格式。因此,我的代码包含:

1
2
3
4
func wsHandler(ws *websocket.Conn) {
    var evnt event
    websocket.JSON.Receive(ws, &evnt)
    

但是,这会阻塞,直到客户端关闭连接。我知道这个 websocket 包早于上下文(并且我知道有更新的 websocket 包),但仍然 – 真的没有办法以非阻塞方式等待传入帧吗?


正确答案


这会阻塞,直到客户端关闭连接。

处理并发阻塞操作的最简单方法是给它们一个 goroutine。 goroutines 与进程或线程不同,本质上是“免费的”。

1
2
3
4
5
6
7
func wsHandler(ws *websocket.Conn) {
    go func() {
      var evnt event
      websocket.JSON.Receive(ws, &evnt)
      ....
   }()
}

理论要掌握,实操不能落!以上关于《使用非阻塞方式在 Go 中监听服务器端 WebSocket 连接》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>