Skip to content

Commit c1deaf8

Browse files
committed
create server/client
1 parent c64db1c commit c1deaf8

File tree

3 files changed

+87
-0
lines changed

3 files changed

+87
-0
lines changed

client.html

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
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+
</head>
8+
<body>
9+
<h1>WebSocket Chat</h1>
10+
<input type="text" id="messageInput" placeholder="Type your message">
11+
<button onclick="sendMessage()">Send</button>
12+
13+
<script src="client.js"></script>
14+
</body>
15+
</html>

client.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Create a WebSocket connection
2+
const socket = new WebSocket('ws://localhost:8080');
3+
4+
// Event listener for when the connection is opened
5+
socket.addEventListener('open', (event) => {
6+
console.log('Connected to WebSocket server');
7+
});
8+
9+
// Event listener for messages from the server
10+
socket.addEventListener('message', (event) => {
11+
console.log(`Received from server: ${event.data}`);
12+
});
13+
14+
// Event listener for when the connection is closed
15+
socket.addEventListener('close', (event) => {
16+
if (event.wasClean) {
17+
console.log('Connection closed cleanly');
18+
} else {
19+
console.error('Connection abruptly closed');
20+
}
21+
});
22+
23+
// Event listener for connection errors
24+
socket.addEventListener('error', (event) => {
25+
console.error('WebSocket error:', event);
26+
});
27+
28+
// Send a message to the server
29+
function sendMessage() {
30+
const message = document.getElementById('messageInput').value;
31+
console.log(message);
32+
socket.send(message);
33+
}

server.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// Import required modules
2+
const http = require('http');
3+
const WebSocket = require('ws');
4+
5+
// Create an HTTP server
6+
const server = http.createServer((req, res) => {
7+
res.writeHead(200, { 'Content-Type': 'text/plain' });
8+
res.end('WebSocket Server Running');
9+
});
10+
11+
// Create a WebSocket server by passing the HTTP server
12+
const wss = new WebSocket.Server({ server });
13+
14+
// WebSocket server event handling
15+
wss.on('connection', (ws) => {
16+
console.log('Client connected');
17+
18+
// Event listener for messages from clients
19+
ws.on('message', (message) => {
20+
console.log(`Received: ${message}`);
21+
22+
// Broadcast the message to all connected clients
23+
wss.clients.forEach((client) => {
24+
if (client !== ws && client.readyState === WebSocket.OPEN) {
25+
client.send(message);
26+
}
27+
});
28+
});
29+
30+
// Event listener for client disconnection
31+
ws.on('close', () => {
32+
console.log('Client disconnected');
33+
});
34+
});
35+
36+
// Start the HTTP server on port 8080
37+
server.listen(8080, () => {
38+
console.log('Server listening on http://localhost:8080');
39+
});

0 commit comments

Comments
 (0)