Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 12 additions & 6 deletions src/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,31 +15,37 @@ <h4>Group Chat</h4>
<input id="roomName" placeholder="Room name" />
<button id="joinRoom">Join Room</button>
<input id="groupMsg" placeholder="Group message" />
<button id="sendGroup">Send</button>

<button id="sendGroup">Send</button><br/>
<ul id="messages"></ul>

<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io();

document.getElementById("registerBtn").onclick = () => {

const userId = document.getElementById("userId").value;
socket.emit("register", userId);
};

document.getElementById("sendPrivate").onclick = () => {

const toUser = document.getElementById("toUser").value;
const msg = document.getElementById("privateMsg").value;
socket.emit("private message", toUser, msg);
};

document.getElementById("joinRoom").onclick = () => {

const roomName = document.getElementById("roomName").value;
socket.emit("join room", roomName);
};

document.getElementById("sendGroup").onclick = () => {

const roomName = document.getElementById("roomName").value;
const msg = document.getElementById("groupMsg").value;
socket.emit("group message", roomName, msg);
};



function addMessage(msg) {
const li = document.createElement("li");
li.textContent = msg;
Expand Down
38 changes: 29 additions & 9 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,48 @@ const server = createServer(app);
const io = new Server(server);

let users = {};
console.log(users)

app.get('/', (req, res) => {
res.sendFile(join(__dirname, 'index.html'));
});

io.on("connection", (socket) => {
// When user registers or logs in
console.log("A user connected:", socket.id);

// When user registers or logs in


socket.on("register", (userId) => {
users[userId] = socket.id;
console.log(`User ${userId} registered with socket ID ${socket.id}`);
console.log(users)
});
// Private messaging
socket.on("private message", (toUser, msg) => {
const toSocketId = users[toUser];
if (toSocketId) {
io.to(toSocketId).emit("private message", socket.id, msg);
console.log(`Private message from ${socket.id} to ${toUser}: ${msg}`);
console.log(users)
} else {
console.log(`User ${toUser} not found`);


}
});
// Group joining


socket.on("join room", (roomName) => {
socket.join(roomName);
console.log(`User ${socket.id} joined room ${roomName}`);
console.log(users)
});
// Group message

socket.on("group message", (roomName, msg) => {
io.to(roomName).emit("group message", socket.id, msg);
console.log(`Message from ${socket.id} in room ${roomName}: ${msg}`);
console.log(users)
});


socket.on("disconnect", () => {
console.log("User disconnected:", socket.id);
console.log(`User ${socket.id} disconnected`);
for (let userId in users) {
if (users[userId] === socket.id) delete users[userId];
}
Expand Down