summaryrefslogtreecommitdiff
path: root/frontend/src/useSSE.js
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/useSSE.js')
-rw-r--r--frontend/src/useSSE.js32
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;