blob: e741895659fd60c63377b7c4e1549ea93e45b3c9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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;
|