Kalp Atışları ve Ping/Pong Canlı Tutma
Ping/pong çerçeveleri ve STOMP kalp atışlarıyla ölü WebSocket bağlantılarını erkenden algılayın; böylece sunucu kaynakları geri alır ve istemciler hızla yeniden bağlanır.
Kalp Atışları ve Ping/Pong Canlı Tutma, CoddyKit'te ücretsiz bir WebSockets & Real-Time Systems with Spring dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, WebSockets & Real-Time Systems with Spring öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. WebSockets & Real-Time Systems with Spring kursu toplamda 4 dersten oluşur.
Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.
The Silent Death Problem
A WebSocket can look open long after the peer has vanished. A laptop lid closes, a network drops, a NAT mapping expires — yet neither side gets a close frame. This is a half-open connection.
Why It Matters
Half-open sockets waste server memory, keep sessions in maps forever, and let the client believe it is still receiving updates. You need an active probe to discover the truth: a heartbeat.
Ping/Pong Control Frames
The WebSocket protocol defines ping and pong control frames. One side sends a ping; a healthy peer must reply with a pong. No pong within a deadline means the connection is dead.
STOMP Heartbeats in Spring
When you use STOMP over WebSocket, Spring exposes heartbeat configuration. The two numbers are the rate (ms) the server sends and the rate it expects to receive heartbeats.
registry.enableSimpleBroker("/topic")
.setHeartbeatValue(new long[]{10000, 10000})
.setTaskScheduler(heartbeatScheduler());A Scheduler Is Required
Heartbeats need a TaskScheduler to fire on time. Without one Spring silently disables them.
@Bean
public ThreadPoolTaskScheduler heartbeatScheduler() {
ThreadPoolTaskScheduler s = new ThreadPoolTaskScheduler();
s.setPoolSize(1);
s.initialize();
return s;
}Client-Side STOMP Heartbeats
The client declares the matching heartbeat interval. Negotiation picks the slower of each side's value.
const client = new StompJs.Client({
brokerURL: 'wss://api.example.com/ws',
heartbeatIncoming: 10000,
heartbeatOutgoing: 10000
});Raw Ping at the Container Level
For plain (non-STOMP) handlers you can send ping frames directly from the server session.
PingMessage ping = new PingMessage(ByteBuffer.wrap(new byte[]{1}));
session.sendMessage(ping);Choosing an Interval
Tune the interval to your needs:
- Too short wastes bandwidth and battery on mobile
- Too long delays detection of dead peers
- 10–30 seconds is a common sweet spot
Beating Idle Timeouts
Proxies and load balancers drop connections that are idle too long (often 60s). A heartbeat doubles as keep-alive traffic that resets those idle timers and stops them from killing a healthy socket.
Reacting to a Missed Beat
When a heartbeat is missed, Spring closes the session and fires afterConnectionClosed. Use that hook to clean up state and let the client trigger its reconnect logic.
@Override
public void afterConnectionClosed(WebSocketSession s, CloseStatus status) {
registry.remove(s.getId());
log.warn("Closed {} - {}", s.getId(), status);
}Heartbeats vs Application Acks
A heartbeat proves the transport is alive; it does not prove your message was processed. For business-level guarantees you still need application acknowledgements on top of heartbeats.
Quick Check
Test your grasp of keep-alives.
Recap
You made connections self-healing:
- Half-open sockets die silently; heartbeats expose them
- Ping/pong control frames probe transport health
- STOMP heartbeats need a
TaskSchedulerand matching client intervals - Heartbeats also defeat proxy idle timeouts
- Use the close callback to clean up and trigger reconnects
Yapay zeka eğitmeniyle WebSockets & Real-Time Systems with Spring öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 12
- Dersler
- 48
Sıkça Sorulan Sorular
“Kalp Atışları ve Ping/Pong Canlı Tutma” dersi ücretsiz mi?
Evet — “Kalp Atışları ve Ping/Pong Canlı Tutma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve WebSockets & Real-Time Systems with Spring kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. WebSockets & Real-Time Systems with Spring kursu toplamda 4 dersten oluşur.
“Kalp Atışları ve Ping/Pong Canlı Tutma” dersinde ne öğreneceğim?
Ping/pong çerçeveleri ve STOMP kalp atışlarıyla ölü WebSocket bağlantılarını erkenden algılayın; böylece sunucu kaynakları geri alır ve istemciler hızla yeniden bağlanır. WebSockets & Real-Time Systems with Spring ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
WebSockets & Real-Time Systems with Spring öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te WebSockets & Real-Time Systems with Spring, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Kalp Atışları ve Ping/Pong Canlı Tutma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu WebSockets & Real-Time Systems with Spring dersinde kod yazıp çalıştırabilir miyim?
Evet. Her WebSockets & Real-Time Systems with Spring dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- WebSocket Hatalarını Uygun Şekilde Ele Alma
- Bağlantı Yaşam Döngüsü Yönetimi
- Yeniden Denemeler ve Geri Dönüşler
- Kalp Atışları ve Ping/Pong Canlı Tutma