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.
💡 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).
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ər | Sabit | Mənası |
|---|---|---|
| 0 | WebSocket.CONNECTING | Handshake gedir |
| 1 | WebSocket.OPEN | Hazırdır, göndərmək olar |
| 2 | WebSocket.CLOSING | close() çağırılıb |
| 3 | WebSocket.CLOSED | Bağ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.