ZBLOG

go websocket 如何知道WriteMessage 的进度

在 Go WebSocket 中,可以使用 CloseHandler 来判断 WriteMessage 的进度。在 CloseHandler 中,可以检查 err 参数是否为 nil,如果不是,则表示写入消息时发生了错误。

另外,也可以在调用 WriteMessage 之前获取当前的连接状态,并保存下来。然后在 CloseHandler 中,可以再次获取连接状态,并和之前保存的状态比较,来确定消息是否已经完全写入。

例如:

func main() {
    // 创建 WebSocket 服务器
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        conn, err := websocket.Upgrade(w, r, nil, 1024, 1024)
        if err != nil {
            log.Println(err)
            return
        }

        // 获取当前连接状态
        state := conn.WriteState()

        // 发送消息
        err = conn.WriteMessage(websocket.TextMessage, []byte("Hello, world!"))
        if err != nil {
            log.Println(err)
            return
        }

        // 检查消息写入进度
        conn.SetCloseHandler(func(code int, text string) error {
            // 获取当前连接状态
            currentState := conn.WriteState()

            // 判断消息是否已经完全写入
            if currentState != state {
                log.Println("message partially written")
            }

            return nil
        })
    })

    // 启动服务器
    http.ListenAndServe(":8080", nil)
}

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=2471

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?