Skip to content

Commit 2e651f3

Browse files
committed
Socket Set Read Deadline
1 parent 9a4510d commit 2e651f3

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

tcpsocket/client.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,12 @@ func (c *Client) read(face ClientFace) {
110110
// tcp sticky packet: use bufio NewReader, specific characters \n separated
111111
reader := bufio.NewReader(c.conn)
112112
var end byte = '\n'
113+
// Tolerate one heartbeat cycle
114+
wait := time.Duration((conf.Acceptor.Heartbeat.PingMaxTimes+2)*conf.Acceptor.Heartbeat.PingInterval) * time.Second
113115
for {
116+
if wait > 0 {
117+
c.conn.SetReadDeadline(time.Now().Add(wait))
118+
}
114119
msg, err := reader.ReadString(end)
115120
if err != nil {
116121
log.Println("[TCPSocket][client][read] go away:", err, c.Id(), c.RemoteAddr())

websocket/client.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,12 @@ func (c *Client) read(face ClientFace) {
144144
defer func() {
145145
c.Close(face)
146146
}()
147+
// Tolerate one heartbeat cycle
148+
wait := time.Duration((conf.Acceptor.Heartbeat.PingMaxTimes+2)*conf.Acceptor.Heartbeat.PingInterval) * time.Second
147149
for {
150+
if wait > 0 {
151+
c.conn.SetReadDeadline(time.Now().Add(wait))
152+
}
148153
_, msg, err := c.conn.ReadMessage()
149154
if err != nil {
150155
log.Println("[WebSocket][client][read] go away:", err, c.Id(), c.RemoteAddr())

0 commit comments

Comments
 (0)