Websocket Server

Overview

import { WebSocketServer, WebSocket } from 'ws'; // Define the port for the server to listen on const PORT = process.env.PORT || 8080; // Initialize the WebSocket server const wss = new WebSocketServer({ port: PORT }); console.log(`🚀 WebSocket server is running on ws://localhost:${PORT}`); // Event listener for new client connections wss.on('connection', (socket, request) => { // Get client info like IP address if needed const clientIp = request.socket.remoteAddress; //console.log(`🔌 New client connected from ${clientIp}. Total clients: ${wss.clients.size}`); // Send a welcome message to the newly connected client //socket.send(JSON.stringify({ type: 'info', message: 'Welcome to the WebSocket server!' })); // Event listener for incoming messages from this specific client socket.on('message', (rawData, isBinary) => { // Convert the raw buffer data to a readable string or object const message = isBinary ? rawData : rawData.toString(); //console.log(`📥 Received message: ${message}`); // Broadcast the message to all other connected clients wss.clients.forEach((client) => { // Check that the client is open and is NOT the sender if (client !== socket && client.readyState === WebSocket.OPEN) { client.send(rawData, { binary: isBinary }); } }); }); // Event listener for when this specific client disconnects socket.on('close', (code, reason) => { //console.log(`❌ Client disconnected (Code: ${code}, Reason: ${reason || 'None'}). Remaining clients: ${wss.clients.size}`); }); // Handle errors for this specific connection socket.on('error', (error) => { //console.error(`⚠️ Client socket error:`, error); }); }); // Handle overall server errors wss.on('error', (error) => { console.error('🚨 WebSocket server error:', error); });