6.1 WebSocket haqqında əsas anlayışlar
WebSocket — bu, bir TCP bağlantısı üzərindən tam dupleksli bağlantı təmin edən bir protokoldur. Bu protokol klient və server arasında iki tərəfli məlumat ötürülməsini dəstəkləyir və onu çatlar, onlayn oyunlar və bildiriş sistemləri kimi real vaxtlı məlumat mübadiləsi tələb edən tətbiqlər üçün ideal edir.
WebSocket'ın üstünlükləri
- İki tərəfli əlaqə: WebSocket server və klientin bir-birinə istənilən vaxt mesaj göndərməsini təmin edən iki tərəfli məlumat ötürülməsi ilə təmin edir.
- Az gecikmə: ənənəvi HTTP sorğuları ilə müqayisədə, WebSocket davamlı bağlantı səbəbindən gecikməni azaldır.
- Serverə az yük: WebSocket HTTP sorğularının sayını azaldır, bu da server yüklənməsini azaldır.
WebSocket'ın əsas komponentləri
- WebSocket server: WebSocket bağlantılarını qəbul edən və emal edən server hissəsi.
- WebSocket klient: WebSocket server ilə əlaqəni təmin edən və məlumat mübadiləsi edən klient hissəsi.
6.2 JavaScript-də WebSocket ilə İş
JavaScript-də WebSocket ilə iş WebSocket obyektindən istifadə etməklə həyata keçirilir. Bu obyekt əlaqənin qurulması, mesajların göndərilməsi və alınması, həmçinin hadisələrin emalı üçün metodlar təqdim edir.
WebSocket-bağlantısının yaradılması:
const socket = new WebSocket('ws://server.example.com/chat');
WebSocket-in Hadisələri:
open
: əlaqə qurulduqda baş verir.message
: serverdən mesaj alındıqda baş verir.error
: xətalar baş verdikdə baş verir.close
: əlaqə bağlandıqda baş verir.
WebSocket-in istifadə nümunəsi:
const socket = new WebSocket('ws://server.example.com/chat');
socket.addEventListener('open', (event) => {
console.log('WebSocket serverinə qoşuldu');
socket.send('Salam Server!');
});
socket.addEventListener('message', (event) => {
console.log('Serverdən mesaj:', event.data);
});
socket.addEventListener('error', (event) => {
console.error('WebSocket xətası:', event);
});
socket.addEventListener('close', (event) => {
console.log('WebSocket serverindən bağlantı kəsildi');
});
6.3 WebSocket serverinin Node.js-də nümunəsi
WebSocket serveri yaratmaq üçün Node.js-də ws kitabxanasından istifadə etmək olar.
Kitabxananın quraşdırılması:
npm install ws
WebSocket serverinin nümunəsi:
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', (ws) => {
console.log('Yeni müştəri qoşuldu');
ws.on('message', (message) => {
console.log('Alındı:', message);
ws.send(`Server deyir: ${message}`);
});
ws.on('close', () => {
console.log('Müştəri ayrıldı');
});
});
console.log('WebSocket serveri ws://localhost:8080 ünvanında işləyir');
6.4 WebSocket-in əsas hadisələri və metodları
Klient hadisələri:
onopen
: WebSocket bağlantısı qurulduqda işə düşüronmessage
: serverdən mesaj alındıqda işə düşüronclose
: WebSocket bağlantısı bağlandıqda işə düşüronerror
: WebSocket xətası olduqda işə düşür
Klient metodları
send(data)
: serverə məlumat göndərirclose(code, reason)
: göstərilən kod və səbəblə WebSocket bağlantısını bağlayır
Server hadisələri
connection
: klient serverə qoşulduqda işə düşürmessage
: server klientdən mesaj aldıqda işə düşürclose
: WebSocket bağlantısı bağlandıqda işə düşürerror
: WebSocket xətası olduqda işə düşür
Server metodları
send(data)
: klientə məlumat göndərirclose(code, reason)
: göstərilən kod və səbəblə WebSocket bağlantısını bağlayır
6.5 WebSocket istifadəsi nümunələri
Nümunə: Real vaxtda çat
Müştəri tərəfi:
<!DOCTYPE html>
<html>
<head>
<title>WebSocket Çat</title>
</head>
<body>
<input type="text" id="message" placeholder="Mesajınızı daxil edin" />
<button onclick="sendMessage()">Göndər</button>
<div id="chat"></div>
<script>
const socket = new WebSocket('ws://localhost:8080');
const chat = document.getElementById('chat');
socket.onopen = function() {
console.log('WebSocket indi açıqdır.');
};
socket.onmessage = function(event) {
const message = document.createElement('p');
message.textContent = event.data;
chat.appendChild(message);
};
socket.onclose = function() {
console.log('WebSocket indi bağlandı.');
};
socket.onerror = function(event) {
console.error('WebSocket xətası müşahidə olundu:', event);
};
function sendMessage() {
const messageInput = document.getElementById('message');
const message = messageInput.value;
socket.send(message);
messageInput.value = '';
}
</script>
</body>
</html>
Server tərəfi:
const WebSocket = require('ws');
const server = new WebSocket.Server({ port: 8080 });
server.on('connection', (ws) => {
console.log('Yeni müştəri qoşuldu!');
ws.on('message', (message) => {
console.log('Alındı:', message);
// Mesajın bütün qoşulmuş müştərilərə göndərilməsi
server.clients.forEach(client => {
if (client.readyState === WebSocket.OPEN) {
client.send(message);
}
});
});
ws.on('close', () => {
console.log('Müştəri əlaqəni kəsdi');
});
ws.on('error', (error) => {
console.error('WebSocket xətası:', error);
});
});
console.log('WebSocket server ws://localhost:8080 ünvanında işə salındı');
GO TO FULL VERSION