【问题标题】:Gorilla Websocket manual close client connectGorilla Websocket 手动关闭客户端连接
【发布时间】:2018-08-09 06:27:54
【问题描述】:

我尝试关闭连接手册(使用 Dark WebSocket Terminal),但客户端告诉我 1005(无状态接收)
服务器:

ReadLoop:
for {
    mt, message, err := c.ReadMessage()
    if err != nil {
        log.Println("read:", err)
        log.Println("messageType:", mt)
        if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseAbnormalClosure) {
            log.Printf("error: %v", err)
        }
        c.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, ""))
        break ReadLoop
    }
    log.Printf("recv: %s", message)

    //do sth in here

    err = c.WriteMessage(mt, message)
    if err != nil {
        //WriteMessage wrong
        log.Println("write:", err)
        break ReadLoop
    }
}

它不起作用并显示预期输出以下内容:

read: websocket: close 1005 (no status)
messageType: -1
error: websocket: close 1005 (no status)

我该怎么办?

【问题讨论】:

    标签: go websocket gorilla


    【解决方案1】:

    对等方关闭连接但未发送状态。您可以通过将 websocket.CloseNoStatusReceived 添加到 websocket.IsUnexpectedCloseError 参数来禁止记录此状态。

        if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseNoStatusReceived) {
            log.Printf("error: %v", err)
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      • 1970-01-01
      • 2017-06-06
      • 1970-01-01
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多