Day 55 WebSockets
WebSocket ek persistent connection hai client aur server ke beech — dono ek dusre ko kisi bhi waqt data bhej sakte hain. HTTP se alag — server khud data push kar sakta hai. Chat apps, live scores, real-time collaboration sab WebSockets use karte hain.
WebSocket Client
WebSocket connection banao aur messages bhejo/receive karo.
// WebSocket connection
const ws = new WebSocket("wss://echo.websocket.org");
// Events
ws.onopen = () => {
console.log("✅ Connected!");
ws.send(JSON.stringify({ type: "hello", message: "Assalam!" }));
};
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log("Received:", data);
};
ws.onerror = (error) => {
console.error("WebSocket Error:", error);
};
ws.onclose = (event) => {
console.log("Connection closed:", event.code, event.reason);
};
// Send message
function sendMessage(text) {
if (ws.readyState === WebSocket.OPEN) {
ws.send(JSON.stringify({ type: "message", text, time: Date.now() }));
}
}
// Cleanup
window.onunload = () => ws.close();
Simple Chat UI
WebSocket se real-time chat.
// Simple chat with ws library (Node.js server needed)
const chatMessages = document.getElementById("messages");
const input = document.getElementById("msgInput");
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
const div = document.createElement("div");
div.className = `msg ${msg.fromSelf ? "self" : "other"}`;
div.textContent = msg.text;
chatMessages.appendChild(div);
chatMessages.scrollTop = chatMessages.scrollHeight;
};
input.addEventListener("keydown", e => {
if (e.key === "Enter" && input.value.trim()) {
ws.send(JSON.stringify({ text: input.value.trim() }));
input.value = "";
}
});
🎯 Practice Challenge
WebSocket test server (websocket.org/echo) se connect karo. Ek message bhejo aur echo receive karo. Multi-message chat UI banao.