判断 websocket.conn == nil 时进行 continue,程序为什么还会继续往下走呢

1. 运行环境

  • ubuntu 版本:buntu 20.04
  • Golang 版本:Golang 1.17.6

2. 问题描述?

使用 gorilla/websocket 库,在发送消息的前面已判断 Conn == nil 值时进行 continue,为什么还会继续往下走.

判断 websocket.conn == nil 时进行 continue,程序为什么还会继续往下走呢

判断 websocket.conn == nil 时进行 continue,程序为什么还会继续往下走呢

go
最佳答案

经排查后发现不是由于 websocket.conn == nil 引起的问题,而是因在执行 websocket.Write 前的一段获取是否有发送的数据导致的。获取数据的这块逻辑没有加锁。 示例代码:

func (sc *SocketConn) Getmsg() []byte {
    by := []byte{}
    if len(sc.QueueBy) > 0 {
        by = sc.QueueBy[0]
        sc.QueueBy = sc.QueueBy[1:]
    }
    return by
}
1年前 评论
讨论数量: 5

为什么不return

1年前 评论
工匠 (楼主) 1年前
工匠 (楼主) 1年前
lxzan (作者) 1年前

经排查后发现不是由于 websocket.conn == nil 引起的问题,而是因在执行 websocket.Write 前的一段获取是否有发送的数据导致的。获取数据的这块逻辑没有加锁。 示例代码:

func (sc *SocketConn) Getmsg() []byte {
    by := []byte{}
    if len(sc.QueueBy) > 0 {
        by = sc.QueueBy[0]
        sc.QueueBy = sc.QueueBy[1:]
    }
    return by
}
1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!