Day 55

WebSockets

13 min
JavaScript 100 Days

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.js
javascript
// 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.

chat.js
javascript
// 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.