Skip to content

Commit

Permalink
close: Implement CloseNow
Browse files Browse the repository at this point in the history
Closes #384
  • Loading branch information
nhooyr committed Oct 14, 2023
1 parent 1dbc141 commit 573d08c
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 0 deletions.
9 changes: 9 additions & 0 deletions close.go
Expand Up @@ -102,6 +102,15 @@ func (c *Conn) Close(code StatusCode, reason string) error {
return c.closeHandshake(code, reason)
}

// CloseNow closes the WebSocket connection without attempting a close handshake.
// Use When you do not want the overhead of the close handshake.
func (c *Conn) CloseNow() (err error) {
defer errd.Wrap(&err, "failed to close WebSocket")

c.close(nil)
return c.closeErr
}

func (c *Conn) closeHandshake(code StatusCode, reason string) (err error) {
defer errd.Wrap(&err, "failed to close WebSocket")

Expand Down
6 changes: 6 additions & 0 deletions conn.go
Expand Up @@ -147,6 +147,12 @@ func (c *Conn) close(err error) {
if c.isClosed() {
return
}
if err == nil {
err = c.rwc.Close()
if err == nil {
err = errors.New("WebSocket closed abnormally")
}
}
c.setCloseErrLocked(err)
close(c.closed)
runtime.SetFinalizer(c, nil)
Expand Down

0 comments on commit 573d08c

Please sign in to comment.