text/event-stream协议
客户端接收 text/event-stream
html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Stream Demo</title> <style type="text/css"> body { font-family: Arial, sans-serif; text-align: center; } #event-stream-data { margin: 50px auto; max-width: 600px; border: 1px solid #ccc; padding: 10px; } </style> </head> <body> <div id="event-stream-data"></div> <script> const eventStreamDataElement = document.getElementById('event-stream-data'); function handleEventStreamMessage(event) { console.log(event) const eventText = event.data; displayEvent(eventText); } function displayEvent(eventText) { const eventElement = document.createElement('p'); eventElement.textContent = eventText; eventStreamDataElement.appendChild(eventElement); } function connectToEventStream() { fetch('http://localhost:8004/website/events', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ data: 'example' }) // Replace with your POST data }) .then(response => { const reader = response.body.getReader(); const decoder = new TextDecoder(); return reader.read().then(function processResult(result) { console.log(result) if (result.done) { return; } const chunk = decoder.decode(result.value, { stream: true }); handleEventStreamMessage({ data: chunk }); return reader.read().then(processResult); }); }) .catch(error => { console.error('Error occurred while fetching event stream:', error); }); } connectToEventStream(); </script> </body> </html>
服务端发送(springboot)
@PostMapping(value = "/events", produces = MediaType.TEXT_EVENT_STREAM_VALUE) public SseEmitter eventStream(@RequestBody Object obj) { SseEmitter emitter = new SseEmitter(); System.out.println(obj.toString()); ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1); executorService.scheduleAtFixedRate(() -> { try { // 模拟产生一条事件数据 String eventData = "Event data: " + System.currentTimeMillis(); emitter.send(SseEmitter.event().data(eventData)); } catch (IOException e) { emitter.complete(); } }, 0, 1, TimeUnit.SECONDS); return emitter; }
哇!又赚了一天人民币
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 在缓慢中沉淀,在挑战中重生!2024个人总结!
· 大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!
· 从 Windows Forms 到微服务的经验教训