首页 > 其他分享 >text/event-stream协议

text/event-stream协议

时间:2023-07-27 17:46:54浏览次数:45  
标签:const stream text data eventText event

客户端接收 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;
    }

标签:const,stream,text,data,eventText,event
From: https://www.cnblogs.com/bxmm/p/17585585.html

相关文章

  • @PersistenceContext 和 @Resource
    @PersistenceContextprivate EntityManager em;注入的是实体管理器,执行持久化操作的,需要配置文件persistence.xml。注入一堆保存实体类状态的数据结构,针对实体类的不同状态(四种,managedh或detached等)可以做出不同的反应(merge,persist等等),其实就是把数据从数据库里提出,然......
  • [Javascript] removeEventListener
    Mistake1:Notusingthesamefunctionreference//Wrongbutton.addEventListener('click',()=>{console.log('click')})button.removeEventListener('click',()=>{console.log('click')})//Won'tremovet......
  • 尝试解决Sublime Text启动即卡死白屏无响应问题
    最近在使用SublimeText时发现启动时会卡死将近1-2分钟,一两次可还行,但次次都出现这个问题真的忍不了辣!!等得我要摔电脑辣!!(bushi 1.问题的产生在Sublime中按下Ctrl+~开启控制台界面见下图: 我们可以看见其他插件正常加载(reloading),但我的1self这个插件出现了报错,(合理推测......
  • java stream 去重
    JavaStream去重引言JavaStream是Java8引入的一种新的数据处理方式,它提供了一种更为简洁和高效的方法来处理集合数据。在实际开发中,我们经常需要对一个集合进行去重操作,本文将教你如何使用JavaStream去重。流程下面是使用JavaStream去重的步骤:步骤描述1......
  • java stream 求和
    JavaStream求和概述在Java中,Stream是一种用于集合处理的强大工具。它提供了一种声明性的方式来对集合进行操作,包括过滤、映射、排序和聚合等操作。其中,求和是一种常见的聚合操作,本文将向你介绍如何使用JavaStream来实现求和功能。流程以下是实现JavaStream求和的基本流程:......
  • 关于context的用法示例
    1.示例代码ser=self.get_serializer(context={'request':request},data=request.data)以上代码使用了context的方法将request传入到序列化类中 2.另一种写法ser=self.get_serializer(data=request.data)ser.aaa=request 这样也可以向序列化类传入request,如果序列化类......
  • TextMeshPro2.1.6GC优化
    地址:https://github.com/YingMei7531/TextMeshPro2.1.6-GCOptimize参考这个项目进行的TMP优化,简单说就是用对象池降低了GC消耗。原项目是1.4.1,这里做了小修改换成了2.1.6。......
  • [Java] Stream流求和、排序、分组
    List、Set集合通过Stream流求和一、泛型为Integer、Long、Double、BigDecimal求和Integersum=scores.stream().reduce(Integer::sum).orElse(0);Longsum=scores.stream().reduce(Long::sum).orElse(0L);Doublesum=scores.stream().reduce(Double::sum).orElse(0.00)......
  • QDataStream 读取与写入QByteArray
    问题:QDataStream中写入的数据比QByteArray多了4个byte。仔细看了下,这个4个byte表示的是QByteArray的数据长度。转载官方文档:https://doc.qt.io/qt-6/qdatastream.htmlQDataStream &QDataStream::readBytes(char *&s, uint &l)Readsthebuffer s fromthestreamandr......
  • 'GridViewDeletedEventArgs '末包含' RowIndex "的定义,并且找不到可接受第一 个"GridV
     页面中设置了“OnRowDeleting="List_RowDeleting"DataKeyNames="id"”后台代码为:行178:protectedvoidList_RowDeleting(objectsender,GridViewDeletedEventArgse)行179:{行180:stringid=this.List.DataKeys[e.RowIndex].Value.ToString();行181:SqlC......