ZBLOG

go websocket 如何知道WriteMessage 的进度

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

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

例如:

  1. func main() {
  2. // 创建 WebSocket 服务器
  3. http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
  4. conn, err := websocket.Upgrade(w, r, nil, 1024, 1024)
  5. if err != nil {
  6. log.Println(err)
  7. return
  8. }
  9. // 获取当前连接状态
  10. state := conn.WriteState()
  11. // 发送消息
  12. err = conn.WriteMessage(websocket.TextMessage, []byte("Hello, world!"))
  13. if err != nil {
  14. log.Println(err)
  15. return
  16. }
  17. // 检查消息写入进度
  18. conn.SetCloseHandler(func(code int, text string) error {
  19. // 获取当前连接状态
  20. currentState := conn.WriteState()
  21. // 判断消息是否已经完全写入
  22. if currentState != state {
  23. log.Println("message partially written")
  24. }
  25. return nil
  26. })
  27. })
  28. // 启动服务器
  29. http.ListenAndServe(":8080", nil)
  30. }

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?