Does the following code create duplicate on.message
listeners ?
when i execute on.message
once, the payloads array takes it's initial value each time
export default function ProjectChat() {
const { id: projectId } = useParams()
const [payloads, setPayloads] = useState([])
const [messageBody, setMessageBody] = useState('')
const [webSocket, setWebSocket] = useState(null)
// Create the connection
useEffect(() => {
const url = `ws://localhost:3000/ws/${projectId}`;
const ws = new WebSocket(url);
setWebSocket(ws)
return () => ws.close()
}, [])
useEffect(() => {
if (webSocket !== null) {
webSocket.onmessage = e => {
const payload = JSON.parse(e.data);
const allMessages = [...payloads, payload]
setPayloads(allMessages)
}
}
}, [webSocket, payloads])
return <p>jsx</p>
}