Created
February 7, 2025 17:22
-
-
Save suhailroushan13/b1cc54619a9b2f254bc082e45e75dda1 to your computer and use it in GitHub Desktop.
Socket
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
npm init -y | |
npm install express socket.io | |
import express from "express"; | |
import { createServer } from "http"; | |
import { Server } from "socket.io"; | |
const app = express(); | |
const server = createServer(app); | |
const io = new Server(server); | |
app.use(express.static("public")); // Serve static frontend files | |
io.on("connection", (socket) => { | |
console.log("A user connected:", socket.id); | |
socket.on("chat message", (msg) => { | |
io.emit("chat message", msg); // Broadcast message to everyone | |
}); | |
socket.on("disconnect", () => { | |
console.log("User disconnected:", socket.id); | |
}); | |
}); | |
server.listen(3000, () => { | |
console.log("Server running on http://localhost:3000"); | |
}); | |
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>Simple Chat</title> | |
<script src="/socket.io/socket.io.js"></script> | |
<style> | |
body { font-family: Arial, sans-serif; text-align: center; } | |
#messages { height: 300px; overflow-y: scroll; border: 1px solid #ccc; padding: 10px; } | |
input { width: 80%; padding: 10px; margin-top: 10px; } | |
</style> | |
</head> | |
<body> | |
<h1>Chat App</h1> | |
<div id="messages"></div> | |
<input id="messageInput" placeholder="Type a message..." autocomplete="off"> | |
<button onclick="sendMessage()">Send</button> | |
<script> | |
const socket = io(); | |
const messagesDiv = document.getElementById("messages"); | |
const input = document.getElementById("messageInput"); | |
socket.on("chat message", (msg) => { | |
const p = document.createElement("p"); | |
p.textContent = msg; | |
messagesDiv.appendChild(p); | |
messagesDiv.scrollTop = messagesDiv.scrollHeight; | |
}); | |
function sendMessage() { | |
const message = input.value; | |
if (message.trim() !== "") { | |
socket.emit("chat message", message); | |
input.value = ""; | |
} | |
} | |
input.addEventListener("keypress", (e) => { | |
if (e.key === "Enter") sendMessage(); | |
}); | |
</script> | |
</body> | |
</html> | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment