WebSocket nədir

HTTP sorğu-cavab modelidir: server brauzerə özü məlumat göndərə bilmir. Canlı məlumat üçün əvvəllər polling (hər saniyə soruşmaq) istifadə olunurdu: bu, serveri yükləyir və gecikmə yaradır. WebSocket bir dəfə qurulan, açıq qalan ikitərəfli əlaqədir: hər iki tərəf istənilən vaxt mesaj göndərə bilər.

Ünvan sxemləri ws:// və wss:// (TLS ilə). Əlaqə adi HTTP sorğusu ilə başlayır (Upgrade: websocket), server 101 Switching Protocols cavabı verir və eyni TCP əlaqəsi üzərində frame-lər axmağa başlayır.

WebSocket handshake və mesajlar
WebSocket handshake və mesajlar

💡 Server yalnız brauzerə məlumat axıdırsa, Server-Sent Events (EventSource) daha sadə həlldir. WebSocket ikitərəfli mübadilə lazım olanda seçilir.


Əlaqə, hadisələr və vəziyyət

Əlaqə new WebSocket(url) ilə yaradılır və dörd hadisə ilə idarə olunur. Aşağıdakı nümunədə server ekho serveridir (nümunə ünvandır, öz serverinizi yazın).

javascript
const ws = new WebSocket('wss://echo.example.test/chat');

ws.addEventListener('open', () => {
  console.log('open');
  ws.send('hello');
});

ws.addEventListener('message', (event) => {
  console.log('message:', event.data);
});

ws.addEventListener('close', (event) => {
  console.log('close:', event.code);
});

Əlaqənin vəziyyəti ws.readyState xassəsindədir:

DəyərSabitMənası
0WebSocket.CONNECTINGHandshake gedir
1WebSocket.OPENHazırdır, göndərmək olar
2WebSocket.CLOSINGclose() çağırılıb
3WebSocket.CLOSEDBağlıdır və ya qoşulmaq alınmadı

error hadisəsi təfərrüat vermir (təhlükəsizlik səbəbindən), həmişə ardınca close gəlir; səbəbi event.code göstərir.