Open mofadeyunduo opened 4 years ago
func (c *clientConn) pingLoop() {
lastPing := time.Now()
lastTry := lastPing
for {
now := time.Now()
pingDiff := now.Sub(lastPing)
tryDiff := now.Sub(lastTry)
select {
case ok := <-c.pingChan:
if !ok {
return
}
fmt.Println("ping chan receive data")
lastPing = time.Now()
lastTry = lastPing
case <-time.After(c.pingInterval - tryDiff):
fmt.Println("ping again")
c.writerLocker.Lock()
if w, _ := c.getCurrent().NextWriter(message.MessageText, parser.PING); w != nil {
writer := newConnWriter(w, &c.writerLocker)
writer.Close()
} else {
c.writerLocker.Unlock()
}
lastTry = time.Now()
}
case <-time.After(c.pingTimeout - pingDiff):
c.Close()
return
}
}
}
Socket.IO 默认 pingInterval 为 25s,pingTimeout 5s,如果 pingInterval > pingTimeout 会导致强制销毁 Socket.IO 链接,我觉得这个是有问题的
我改了下他上面的问题,并且魔改了一些东西,Socket.IO 2.x 也可以使用,可以参考 go-socket.io-client,有问题提 Issue
我改了下他上面的问题,并且魔改了一些东西,Socket.IO 2.x 也可以使用,可以参考 go-socket.io-client,有问题提 Issue
请问基于https地址的socket是否支持,我自己测试是不支持的。
显示超时,我使用nodejs是可以实现的,基于socket.io 1.7.4版本