Bağlantı kurulduktan sonra, hiçbir eş veri göndermezse, ağ üzerinden hiçbir paket gönderilmez. TCP boşta kalan bir protokoldür, bu nedenle bağlantının hâlâ etkin olduğunu varsayar.
İkinci bir bağlantı açmayı ve bağlanmayı deneyebilirsiniz, ancak bunun bazı dezavantajları vardır: daha fazla kaynak tüketiyorsunuz, yeni iş parçacıkları oluşturuyorsunuz vb. Ayrıca, diğer eş yeniden başlatıldıysa, ikinci bağlantı çalışacak ancak ilki çalışmayacaktır.
Yarı açık bir bağlantıyla bir ping veya başka bir mesaj göndermeye çalışırsanız, herhangi bir hata almadığınızı göreceksiniz.
Bir TCP keep-alive paketi, sıra numarası bağlantının geçerli sıra numarasından bir eksiğe ayarlanmış basit bir ACK'dir. Bu ACK'lerden birini alan bir ana bilgisayar, geçerli sıra numarası için bir ACK ile yanıt verir. Keep-alive'lar, bir bağlantının uzak ucundaki bilgisayarın hâlâ kullanılabilir olduğunu doğrulamak için kullanılabilir. TCP bağlantısı üzerinden başka veri veya daha yüksek seviyeli keep-alive taşınmadıysa, TCP keep-alive'lar her TCPKeepAlive.Time'da bir kez (varsayılan olarak 7.200.000 milisaniye veya iki saat) gönderilebilir. Bir keep-alive'a yanıt yoksa, her TCPKeepAlive.Interval saniyede bir tekrarlanır. KeepAliveInterval varsayılan olarak 1000 milisaniyedir.
Bağlantı başına KeepAlive'ı etkinleştirebilir ve TCP protokolünün bağlantının aktif olup olmadığını kontrol etmesine izin verebilirsiniz. Düşen bağlantı kesintilerini algılamak istiyorsanız (örneğin: bir ağ kablosunu çıkardığınızda) tercih edilen yöntem budur.
oClient := TsgcWebSocketClient.Create(nil);
oClient.TCPKeepAlive.Enabled := True;
oClient.TCPKeepAlive.Time := 5000;
oClient.TCPKeepAlive.Interval := 1000;