Suppress logging of routine websocket disconnection error.

This commit is contained in:
Patrick Fairbank
2018-08-25 15:40:42 -07:00
parent 3742e773c2
commit e9acaf4e99

View File

@@ -7,6 +7,7 @@ package web
import ( import (
"github.com/gorilla/websocket" "github.com/gorilla/websocket"
"io"
"net/http" "net/http"
"sync" "sync"
) )
@@ -33,30 +34,35 @@ func NewWebsocket(w http.ResponseWriter, r *http.Request) (*Websocket, error) {
return &Websocket{conn, new(sync.Mutex)}, nil return &Websocket{conn, new(sync.Mutex)}, nil
} }
func (websocket *Websocket) Close() { func (ws *Websocket) Close() {
websocket.conn.Close() ws.conn.Close()
} }
func (websocket *Websocket) Read() (string, interface{}, error) { func (ws *Websocket) Read() (string, interface{}, error) {
var message WebsocketMessage var message WebsocketMessage
err := websocket.conn.ReadJSON(&message) err := ws.conn.ReadJSON(&message)
if websocket.IsCloseError(err, websocket.CloseNoStatusReceived) {
// This error indicates that the browser terminated the connection normally; rewwrite it so that clients don't
// log it.
return "", nil, io.EOF
}
return message.Type, message.Data, err return message.Type, message.Data, err
} }
func (websocket *Websocket) Write(messageType string, data interface{}) error { func (ws *Websocket) Write(messageType string, data interface{}) error {
websocket.writeMutex.Lock() ws.writeMutex.Lock()
defer websocket.writeMutex.Unlock() defer ws.writeMutex.Unlock()
return websocket.conn.WriteJSON(WebsocketMessage{messageType, data}) return ws.conn.WriteJSON(WebsocketMessage{messageType, data})
} }
func (websocket *Websocket) WriteError(errorMessage string) error { func (ws *Websocket) WriteError(errorMessage string) error {
websocket.writeMutex.Lock() ws.writeMutex.Lock()
defer websocket.writeMutex.Unlock() defer ws.writeMutex.Unlock()
return websocket.conn.WriteJSON(WebsocketMessage{"error", errorMessage}) return ws.conn.WriteJSON(WebsocketMessage{"error", errorMessage})
} }
func (websocket *Websocket) ShowDialog(message string) error { func (ws *Websocket) ShowDialog(message string) error {
websocket.writeMutex.Lock() ws.writeMutex.Lock()
defer websocket.writeMutex.Unlock() defer ws.writeMutex.Unlock()
return websocket.conn.WriteJSON(WebsocketMessage{"dialog", message}) return ws.conn.WriteJSON(WebsocketMessage{"dialog", message})
} }