瀏覽代碼

When sending a Close frame in response, the endpoint typically echos the status code it received.

Luca Tabone 9 年之前
父節點
當前提交
bf696496cb
共有 1 個文件被更改,包括 3 次插入1 次删除
  1. 3 1
      conn.go

+ 3 - 1
conn.go

@@ -726,13 +726,15 @@ func (c *Conn) advanceFrame() (int, error) {
 			return noFrame, err
 		}
 	case CloseMessage:
-		c.WriteControl(CloseMessage, []byte{}, time.Now().Add(writeWait))
+		echoMessage := []byte{}
 		closeCode := CloseNoStatusReceived
 		closeText := ""
 		if len(payload) >= 2 {
+			echoMessage = payload[:2]
 			closeCode = int(binary.BigEndian.Uint16(payload))
 			closeText = string(payload[2:])
 		}
+		c.WriteControl(CloseMessage,  echoMessage, time.Now().Add(writeWait))
 		return noFrame, &CloseError{Code: closeCode, Text: closeText}
 	}