Fix websocket disconnection due to misconfiguration

This commit is contained in:
Denis Arh
2018-10-23 13:19:32 +02:00
parent 8347a645cb
commit 44f212e3ea
2 changed files with 20 additions and 10 deletions
+1 -1
View File
@@ -25,6 +25,6 @@ func (*Websocket) Init(prefix ...string) *Websocket {
websocket = new(Websocket)
websocket.Timeout = 15 * time.Second
websocket.PingTimeout = 120 * time.Second
websocket.PingPeriod = (websocket.PingTimeout * 10) / 9
websocket.PingPeriod = (websocket.PingTimeout * 9) / 10
return websocket
}
+19 -9
View File
@@ -111,17 +111,20 @@ func (sess *Session) Close() {
store.Delete(sess.id)
}
func (sess *Session) readLoop() error {
func (sess *Session) readLoop() (err error) {
defer func() {
log.Println("serveWebsocket - stop")
sess.Close()
}()
sess.conn.SetReadDeadline(time.Now().Add(sess.config.Websocket.PingTimeout))
if err = sess.conn.SetReadDeadline(time.Now().Add(sess.config.Websocket.PingTimeout)); err != nil {
return
}
sess.conn.SetPongHandler(func(string) error {
sess.conn.SetReadDeadline(time.Now().Add(sess.config.Websocket.PingTimeout))
return nil
return sess.conn.SetReadDeadline(time.Now().Add(sess.config.Websocket.PingTimeout))
})
sess.remoteAddr = sess.conn.RemoteAddr().String()
for {
@@ -145,16 +148,23 @@ func (sess *Session) writeLoop() error {
sess.Close() // break readLoop
}()
write := func(msg []byte) error {
sess.conn.SetWriteDeadline(time.Now().Add(sess.config.Websocket.Timeout))
write := func(msg []byte) (err error) {
if err = sess.conn.SetWriteDeadline(time.Now().Add(sess.config.Websocket.Timeout)); err != nil {
return
}
if msg != nil {
return sess.conn.WriteMessage(websocket.TextMessage, msg)
}
return nil
return
}
ping := func() error {
sess.conn.SetWriteDeadline(time.Now().Add(sess.config.Websocket.Timeout))
ping := func() (err error) {
if err = sess.conn.SetWriteDeadline(time.Now().Add(sess.config.Websocket.Timeout)); err != nil {
return
}
return sess.conn.WriteMessage(websocket.PingMessage, nil)
}