Workaround lack of net.ErrClosed in WebSocket library

git-svn-id: file:///srv/svn/repo/suika/trunk@594 f0ae65fe-ee39-954e-97ec-027ff2717ef4
This commit is contained in:
contact 2021-09-21 09:49:48 +00:00
parent bc8adc94c0
commit d046f6b294

12
conn.go
View File

@ -74,8 +74,18 @@ func (wic *websocketIRCConn) WriteMessage(msg *irc.Message) error {
return wic.conn.Write(ctx, websocket.MessageText, b)
}
func isErrWebSocketClosed(err error) bool {
return err != nil && strings.HasSuffix(err.Error(), "failed to close WebSocket: already wrote close")
}
func (wic *websocketIRCConn) Close() error {
return wic.conn.Close(websocket.StatusNormalClosure, "")
err := wic.conn.Close(websocket.StatusNormalClosure, "")
// TODO: remove once this PR is merged:
// https://github.com/nhooyr/websocket/pull/303
if isErrWebSocketClosed(err) {
return nil
}
return err
}
func (wic *websocketIRCConn) SetReadDeadline(t time.Time) error {