Server sent events SSE Java 11+;客户端示例(不带依赖项)

Server sent events SSE Java 11+;客户端示例(不带依赖项),server-sent-events,java-http-client,Server Sent Events,Java Http Client,我正在寻找使用普通JDK11+http客户端读取服务器发送的事件的示例,没有额外的依赖项。我也找不到关于sse的任何信息 有任何提示吗?编辑1:信息和传入数据的格式 编辑2:更新了代码示例,以处理协议的数据:部分。还有事件:、id:和重试:部分(请参见上面的链接),但我不打算为这些部分添加处理 我找不到一个官方的BodySubscriber来做SSE,但写一个也不难。这里有一个粗略的解释(但请注意TODO): 公共类SSESeSubscriber实现BodySubscriber { 受保护的静态

我正在寻找使用普通JDK11+http客户端读取服务器发送的事件的示例,没有额外的依赖项。我也找不到关于sse的任何信息


有任何提示吗?

编辑1:信息和传入数据的格式

编辑2:更新了代码示例,以处理协议的
数据:
部分。还有
事件:
id:
重试:
部分(请参见上面的链接),但我不打算为这些部分添加处理

我找不到一个官方的
BodySubscriber
来做SSE,但写一个也不难。这里有一个粗略的解释(但请注意TODO):

公共类SSESeSubscriber实现BodySubscriber
{
受保护的静态最终模式dataLinePattern=Pattern.compile(“^data:?(.*)”;
受保护的静态字符串extractMessageData(字符串[]消息行)
{
var s=新的StringBuilder();
for(变量行:消息行)
{
var m=dataLinePattern.matcher(行);
if(m.matches())
{
s、 追加(m.group(1));
}
}
返回s.toString();
}

受保护的最终使用者基于Java 11的SSE(服务器发送事件)客户端实现,此处:

它提供了处理SSE消息的非常简单的用法

用法示例:

EventHandler eventHandler = eventText -> { process(eventText); };
        SSEClient sseClient = 
SSEClient sseClient = SSEClient.builder().url(url).eventHandler(eventHandler)
    .build();
sseClient.start();

注意:我是这个SSE客户端的作者。

谢谢!我会尝试一下,如果遇到任何问题,我会告诉你。