WebSocket config: Add heartbeatPeriod for client & server (#4065)

https://github.com/XTLS/Xray-core/pull/4065#issuecomment-2502627154

---------

Co-authored-by: RPRX <63339210+RPRX@users.noreply.github.com>
This commit is contained in:
hr567 2024-11-29 10:08:08 +08:00 committed by GitHub
parent c87cf8ff52
commit 4f6f12616c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 45 additions and 20 deletions

View file

@ -22,7 +22,18 @@ type connection struct {
remoteAddr net.Addr
}
func NewConnection(conn *websocket.Conn, remoteAddr net.Addr, extraReader io.Reader) *connection {
func NewConnection(conn *websocket.Conn, remoteAddr net.Addr, extraReader io.Reader, heartbeatPeriod uint32) *connection {
if heartbeatPeriod != 0 {
go func() {
for {
time.Sleep(time.Duration(heartbeatPeriod) * time.Second)
if err := conn.WriteControl(websocket.PingMessage, []byte{}, time.Time{}); err != nil {
break
}
}
}()
}
return &connection{
conn: conn,
remoteAddr: remoteAddr,