Added room functionality

This commit is contained in:
2023-03-15 11:53:12 +01:00
parent 0b7b9b544a
commit 82626e06ad
3 changed files with 77 additions and 24 deletions

51
src/layout/pages/Room.tsx Normal file
View File

@@ -0,0 +1,51 @@
import useWebSocket from "react-use-websocket";
import React from "react";
import {useParams} from "react-router";
const Room = () => {
const {roomId} = useParams();
const WS_URL = `ws://localhost:5062/room/${roomId}`;
const [message, setMessage] = React.useState<string>('');
const [messages, setMessages] = React.useState<string[]>([]);
const websocket = useWebSocket(WS_URL, {
onOpen: () => {
console.log('WebSocket connection established.');
},
onMessage: (event) => {
setMessages([...messages, event.data]);
}
});
const handleSend = () => {
websocket.sendMessage(message);
setMessage('');
}
const handleMessageChange = (event: React.ChangeEvent<HTMLInputElement>) => {
setMessage(event.target.value);
}
return (
<div>
<h1>Room {roomId}</h1>
<form>
<input type="text" name="message" placeholder="Send a message" value={message}
onChange={handleMessageChange}/>
<span onClick={handleSend}>Send</span>
</form>
<ul>
{
messages.map((message, index) => {
return <li key={index}>{message}</li>
})
}
</ul>
</div>
)
}
export default Room;