CloseNow closes the WebSocket connection without attempting a close handshake. Use when you do not want the overhead of the close handshake.
()
| 130 | // CloseNow closes the WebSocket connection without attempting a close handshake. |
| 131 | // Use when you do not want the overhead of the close handshake. |
| 132 | func (c *Conn) CloseNow() (err error) { |
| 133 | defer errd.Wrap(&err, "failed to immediately close WebSocket") |
| 134 | |
| 135 | if c.casClosing() { |
| 136 | err = c.waitGoroutines() |
| 137 | if err != nil { |
| 138 | return err |
| 139 | } |
| 140 | return net.ErrClosed |
| 141 | } |
| 142 | defer func() { |
| 143 | if errors.Is(err, net.ErrClosed) { |
| 144 | err = nil |
| 145 | } |
| 146 | }() |
| 147 | |
| 148 | err = c.close() |
| 149 | |
| 150 | err2 := c.waitGoroutines() |
| 151 | if err == nil && err2 != nil { |
| 152 | err = err2 |
| 153 | } |
| 154 | return err |
| 155 | } |
| 156 | |
| 157 | func (c *Conn) closeHandshake(code StatusCode, reason string) error { |
| 158 | err := c.writeClose(code, reason) |