libnmdc: send protocol-level keepalives
This commit is contained in:
parent
3dfef302ee
commit
a2b94e8724
@ -15,6 +15,7 @@ import (
|
||||
const (
|
||||
DEFAULT_CLIENT_TAG string = "libnmdc.go"
|
||||
DEFAULT_HUB_NAME string = "(unknown)"
|
||||
SEND_KEEPALIVE_EVERY_SECONDS int = 29
|
||||
)
|
||||
|
||||
type ConnectionState int
|
||||
@ -370,7 +371,17 @@ func (this *HubConnection) worker() {
|
||||
// Read from socket into our local buffer (blocking)
|
||||
if this.connValid {
|
||||
readBuff := make([]byte, 1024)
|
||||
this.conn.SetReadDeadline(time.Now().Add(SEND_KEEPALIVE_EVERY_SECONDS * time.Second))
|
||||
nbytes, err = this.conn.Read(readBuff)
|
||||
|
||||
if err != nil && err.(net.Error).Timeout() {
|
||||
// No data before read deadline
|
||||
err = nil
|
||||
|
||||
// Send KA packet
|
||||
_, err = this.conn.Write([]byte("|"))
|
||||
}
|
||||
|
||||
if nbytes > 0 {
|
||||
fullBuffer += string(readBuff[0:nbytes])
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user