diff options
Diffstat (limited to 'frontend/src/useSSE.js')
| -rw-r--r-- | frontend/src/useSSE.js | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/frontend/src/useSSE.js b/frontend/src/useSSE.js new file mode 100644 index 0000000..e741895 --- /dev/null +++ b/frontend/src/useSSE.js @@ -0,0 +1,32 @@ +import { useState, useEffect } from 'react'; + +const useSSE = (url) => { + const [data, setData] = useState(null); + const [error, setError] = useState(''); + + useEffect(() => { + const eventSource = new EventSource(url); + + eventSource.onmessage = e => { + try { + const result = JSON.parse(e.data); + setData(result); + } catch (err) { + setError('Failed to parse data: ' + err.message); + } + }; + + eventSource.onerror = e => { + setError('EventSource failed'); + eventSource.close(); + }; + + return () => { + eventSource.close(); + }; + }, [url]); + + return { data, error }; +}; + +export default useSSE; |
