| 1871 | } |
| 1872 | |
| 1873 | const parseSSEEvent = (eventBlock) => { |
| 1874 | const lines = eventBlock.split('\n') |
| 1875 | const event = {} |
| 1876 | |
| 1877 | for (const line of lines) { |
| 1878 | if (line.startsWith('event:')) { |
| 1879 | event.event = line.substring(6).trim() |
| 1880 | } else if (line.startsWith('data:')) { |
| 1881 | const dataStr = line.substring(5).trim() |
| 1882 | try { |
| 1883 | const parsed = JSON.parse(dataStr) |
| 1884 | if (parsed.data) { |
| 1885 | event.data = parsed.data |
| 1886 | } |
| 1887 | } catch (e) { |
| 1888 | console.error('Error parsing SSE data:', e, 'Raw data:', dataStr) |
| 1889 | } |
| 1890 | } |
| 1891 | } |
| 1892 | |
| 1893 | return event.event ? event : null |
| 1894 | } |
| 1895 | |
| 1896 | const initializeTTSStreaming = (data) => { |
| 1897 | try { |