Skip to content

Instantly share code, notes, and snippets.

@suhailroushan13
Created February 7, 2025 17:22
Show Gist options
  • Save suhailroushan13/b1cc54619a9b2f254bc082e45e75dda1 to your computer and use it in GitHub Desktop.
Save suhailroushan13/b1cc54619a9b2f254bc082e45e75dda1 to your computer and use it in GitHub Desktop.
Socket
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