0Pricing
WebSockets & Real-Time Systems with Spring · Pelajaran

Sesi Lengket dan Perutean WebSocket

Konfigurasikan penyeimbang beban untuk merutekan koneksi WebSocket yang mempertahankan keadaan dengan benar menggunakan sesi lengket, lalu pelajari kapan broker bersama menghilangkan kebutuhan tersebut.

Sesi Lengket dan Perutean WebSocket adalah pelajaran WebSockets & Real-Time Systems with Spring gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar WebSockets & Real-Time Systems with Spring, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus WebSockets & Real-Time Systems with Spring mencakup 4 pelajaran total.

Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.

WebSockets Are Long-Lived

Unlike a stateless HTTP request, a WebSocket is a persistent connection pinned to one server instance for its entire life. This breaks the assumption load balancers make about HTTP.

The Routing Problem

If the in-memory simple broker holds a user's subscriptions on instance A, a message that lands on instance B has nowhere to deliver. The connection state lives only where the socket terminated.

Sticky Sessions (Session Affinity)

Sticky sessions make the load balancer always route a given client to the same backend instance. This keeps the socket and its server-side state co-located.

Affinity by Cookie

Cloud load balancers commonly implement affinity with a cookie they set on the first response and read on later requests.

# AWS ALB target group attribute
stickiness.enabled = true
stickiness.type = lb_cookie
stickiness.lb_cookie.duration_seconds = 86400

Forwarding the Upgrade

The load balancer must support and forward the HTTP Upgrade handshake. Most modern L7 balancers (ALB, GCP HTTPS LB, Nginx) do, but it must be enabled.

# Nginx
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

Idle Timeouts Bite WebSockets

Load balancers close connections idle beyond a timeout (ALB default 60s). A mostly-quiet WebSocket gets dropped unless you send heartbeats or raise the idle timeout.

idle_timeout.timeout_seconds = 300

Health Checks and Draining

During a deploy, instances are removed. Enable connection draining so in-flight WebSockets finish (or clients reconnect) instead of being cut abruptly.

The Better Answer: Shared Broker

Sticky sessions are a workaround. A cleaner design uses a shared external broker (the STOMP relay): any instance can deliver to any subscriber, so affinity is no longer required for routing.

Combining Both

Even with a shared broker, sticky sessions can still help by keeping a client on one instance to avoid mid-stream reconnects. Use them as an optimization, not a correctness crutch.

Kubernetes Ingress Notes

On Kubernetes, the ingress controller needs WebSocket support and affinity annotations. Nginx ingress, for example, uses cookie-based affinity.

nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/proxy-read-timeout: "300"

Scaling Out Safely

To add capacity, scale instances behind the balancer and rely on the shared broker for fan-out. Keep sessions evenly spread and use draining on scale-down.

Quick Check

Test your routing knowledge.

Recap

You routed WebSockets correctly:

  • WebSockets are long-lived and pinned to one instance
  • Sticky sessions (cookie affinity) keep a client on its instance
  • The balancer must forward the Upgrade header and tolerate idle WebSockets
  • Use connection draining on deploys
  • A shared broker removes the routing need; affinity then becomes an optimization

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Sesi Lengket dan Perutean WebSocket” gratis?

Ya — teks lengkap “Sesi Lengket dan Perutean WebSocket” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus WebSockets & Real-Time Systems with Spring, upgrade ke CoddyKit PRO. Kursus WebSockets & Real-Time Systems with Spring mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Sesi Lengket dan Perutean WebSocket”?

Konfigurasikan penyeimbang beban untuk merutekan koneksi WebSocket yang mempertahankan keadaan dengan benar menggunakan sesi lengket, lalu pelajari kapan broker bersama menghilangkan kebutuhan terseb… Kamu berlatih WebSockets & Real-Time Systems with Spring dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai WebSockets & Real-Time Systems with Spring?

Tidak diperlukan pengalaman sebelumnya. WebSockets & Real-Time Systems with Spring di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Sesi Lengket dan Perutean WebSocket” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran WebSockets & Real-Time Systems with Spring ini?

Ya. Setiap pelajaran WebSockets & Real-Time Systems with Spring menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. WebSockets dalam Arsitektur Layanan Mikro
  2. Strategi Penerapan Cloud (AWS/GCP)
  3. Penyeimbangan Beban dan Ketersediaan Tinggi
  4. Sesi Lengket dan Perutean WebSocket
← Kembali ke WebSockets & Real-Time Systems with Spring