Skip to content

Commit 0f71287

Browse files
authored
Add files via upload
1 parent 45fb7c3 commit 0f71287

File tree

4 files changed

+147
-0
lines changed

4 files changed

+147
-0
lines changed

client.css

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
body {
2+
font-family: Arial, sans-serif;
3+
margin: 0;
4+
padding: 0;
5+
background-color: #f5f5f5;
6+
}
7+
8+
h1 {
9+
text-align: center;
10+
color: #333;
11+
}
12+
13+
#messageList {
14+
list-style-type: none;
15+
margin: 0;
16+
padding: 0;
17+
max-height: 300px;
18+
overflow-y: scroll;
19+
border: 1px solid #ccc;
20+
background-color: #fff;
21+
}
22+
23+
#messageList li {
24+
margin: 5px 0;
25+
padding: 5px;
26+
background-color: #f0f0f0;
27+
border-radius: 5px;
28+
}
29+
30+
#messageInput {
31+
width: 70%;
32+
padding: 5px;
33+
border: 1px solid #ccc;
34+
border-radius: 5px;
35+
}
36+
37+
button {
38+
padding: 5px 10px;
39+
background-color: #007BFF;
40+
color: #fff;
41+
border: none;
42+
border-radius: 5px;
43+
cursor: pointer;
44+
}
45+
46+
button:hover {
47+
background-color: #0056b3;
48+
}

client.html

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>WebSocket Chat</title>
7+
<link rel="stylesheet" href="client.css">
8+
</head>
9+
<body>
10+
<h1>WebSocket Chat</h1>
11+
<ul id="messageList"></ul>
12+
<input type="text" id="messageInput" placeholder="Type your message">
13+
<button onclick="sendMessage()">Send</button>
14+
15+
<script src="client.js"></script>
16+
</body>
17+
</html>

client.js

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
const socket = new WebSocket('ws://localhost:8080');
2+
3+
const messageList = document.getElementById('messageList');
4+
const messageInput = document.getElementById('messageInput');
5+
6+
socket.addEventListener('open', (event) => {
7+
console.log('Connected to WebSocket server');
8+
});
9+
10+
socket.addEventListener('message', (event) => {
11+
console.log(`Received from server: ${event.data}`);
12+
13+
appendToList(event.data);
14+
});
15+
16+
socket.addEventListener('close', (event) => {
17+
if (event.wasClean) {
18+
console.log('Connection closed cleanly');
19+
} else {
20+
console.error('Connection abruptly closed');
21+
}
22+
});
23+
24+
socket.addEventListener('error', (event) => {
25+
console.error('WebSocket error:', event);
26+
});
27+
28+
function appendToList(message) {
29+
const listItem = document.createElement('li');
30+
listItem.textContent = message;
31+
32+
messageList.appendChild(listItem);
33+
34+
messageList.scrollTop = messageList.scrollHeight;
35+
}
36+
37+
function sendMessage() {
38+
const message = messageInput.value;
39+
socket.send(message);
40+
41+
messageInput.value = '';
42+
43+
appendToList(message);
44+
}
45+
46+
messageInput.addEventListener('keydown', (event) => {
47+
if (event.key === 'Enter') {
48+
event.preventDefault();
49+
sendMessage();
50+
}
51+
});

server.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
const http = require('http');
2+
const WebSocket = require('ws');
3+
4+
const server = http.createServer((req, res) => {
5+
res.writeHead(200, { 'Content-Type': 'text/plain' });
6+
res.end('WebSocket Server Running');
7+
});
8+
9+
const wss = new WebSocket.Server({ server });
10+
11+
wss.on('connection', (ws) => {
12+
console.log('Client connected');
13+
14+
ws.on('message', (message) => {
15+
console.log(`Received: ${message}`);
16+
17+
wss.clients.forEach((client) => {
18+
if (client !== ws && client.readyState === WebSocket.OPEN) {
19+
client.send(message);
20+
}
21+
});
22+
});
23+
24+
ws.on('close', () => {
25+
console.log('Client disconnected');
26+
});
27+
});
28+
29+
server.listen(8080, () => {
30+
console.log('Server listening on http://localhost:8080');
31+
});

0 commit comments

Comments
 (0)