45 - Chat application with real-time messaging using WebSockets
Previous44 - Kanban board for managing tasks with drag-and-dropNext46 - Calendar that displays events and allows scheduling
Last updated
Last updated
import React, { useState, useEffect } from 'react';
import ChatInterface from './ChatInterface';
import WebSocketService from './WebSocketService';
const ChatApp = () => {
const [messages, setMessages] = useState([]);
const [inputValue, setInputValue] = useState('');
const [connected, setConnected] = useState(false);
useEffect(() => {
WebSocketService.connect();
setConnected(true);
}, []);
const handleSendMessage = (message) => {
WebSocketService.send(message);
};
const handleReceiveMessage = (message) => {
setMessages((prevMessages) => [...prevMessages, message]);
};
return (
<div>
<ChatInterface
messages={messages}
inputValue={inputValue}
handleSendMessage={handleSendMessage}
handleReceiveMessage={handleReceiveMessage}
/>
</div>
);
};
export default ChatApp;
import React from 'react';
const ChatInterface = ({ messages, inputValue, handleSendMessage, handleReceiveMessage }) => {
return (
<div>
<h2>Chat Interface</h2>
<ul>
{messages.map((message, index) => (
<li key={index}>{message}</li>
))}
</ul>
<input
type="text"
value={inputValue}
onChange={(e) => setInputValue(e.target.value)}
/>
<button onClick={() => handleSendMessage(inputValue)}>Send</button>
</div>
);
};
export default ChatInterface;import WebSocket from 'ws';
const WebSocketService = {
connect: () => {
const socket = new WebSocket('ws://localhost:8080');
socket.onmessage = (event) => {
handleReceiveMessage(event.data);
};
socket.onopen = () => {
console.log('Connected to WebSocket server');
};
socket.onclose = () => {
console.log('Disconnected from WebSocket server');
};
},
send: (message) => {
socket.send(message);
},
};
export default WebSocketService;