Gorilla Websocket-读取错误:在失败的Websocket连接上重复读取

Using the gorilla websocket api for go, how do i know if a client is still connected?

What Im trying with now is:

func Listen(ws *websocket.Conn) {
    connTimeout := 3
    timeLastSent := time.Now().Second()

    for ((timeLastSent + connTimeout) % 60) != time.Now().Second() {

        msg := Message{}
        err := ws.ReadJSON(&msg)

        if err == websocket.ErrCloseSent {
            break
        } else if err != nil {
            continue
        }

        //Message recived
        EventMessage <- msg

        timeLastSent = time.Now().Second()
    }
  //Connection timed out.
    return
}

But this results in the error repeated read on failed websocket connection.

Ive been looking into using ws.SetReadDeadline(t), but Ive no idea of either how to use it nor if its even the thing Im looking for.

How should i go about this?

dsj8000
dsj8000 好的,谢谢。认为我现在明白了
4 年多之前 回复
dtqscvrzn968518698
dtqscvrzn968518698 它显示了如何处理ping/pong请求。基本上,除了处理示例中的截止日期外,您实际上不需要执行任何其他操作。一旦在指定的时间范围内没有来自客户端的响应,您就可以返回(关闭服务器上的连接)。
4 年多之前 回复
doukan5332
doukan5332 我不确定这将如何帮助:/您能解释一下吗?
4 年多之前 回复
dtutlamjasblef7982
dtutlamjasblef7982 不,这个。
4 年多之前 回复
dongnanman9093
dongnanman9093 这个?
4 年多之前 回复
dongxieli3839
dongxieli3839 您是否检查了Github存储库中的示例?
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐