当前位置: 首页 > 知识库问答 >
问题:

寻找服务器已发送事件规范的客户端的Java实现。[关闭]

阎德义
2023-03-14

我们不允许对书籍、工具、软件库等寻求建议的问题。您可以编辑问题,以便用事实和引文来回答。

我有一个桌面客户端和一个服务器端,都是用Java实现的。服务器端位于Tomcat上。

现在,我希望检查使用服务器发送的事件,虽然Tomcat可以在服务器上使用它,但我不知道如何从客户端执行它。所有的实现都使用Javascript,如果您的客户机是Javascript客户机,这很好。我的不是。

所以,我的问题是,SSE规范的客户端是否有任何Java实现?

共有1个答案

欧阳杰
2023-03-14

我也遇到了同样的问题,并找到了解决方案。Jersey有一个SSE客户端(它不是标准发行版的一部分,您还需要Jersey media SSE jar,您可以在Maven存储库中找到它。

 public static void consumeEventStream(String url, Consumer consumer) throws Exception {
    Client client = ClientBuilder.newBuilder().register(new SseFeature()).build();
    WebTarget target = client.target(url);
    EventInput e = null;
    while (true) {
        Thread.sleep(1000);
        if (e==null || e.isClosed()) {
            // (re)connect
            e = target.request().get(EventInput.class);

            e.setChunkType("text/event-stream");
        }

        final InboundEvent inboundEvent = e.read();
        if (inboundEvent == null) {  
            break;
        }
        else {
           String data = inboundEvent.getData();
           // do something here - notify observers, parse json etc
        }

    }
    System.out.println("connection closed");
}

调用setChunkType是为了处理泽西中的一个错误——如果char编码是内容类型的一部分,泽西将无法识别事件类型。另一方面,规范和浏览器希望设置内容类型。acc. to jira这已经解决,但在最新版本中还不能正常工作jersey-media-sse-2.2.jar,另请参阅https://java.net/jira/browse/JERSEY-2062.

希望这能帮上忙,詹斯

 类似资料:
  • 我们的团队为特定任务开发了服务器发送事件(SSE)。 我正在尝试构建一个客户端来侦听来自服务器的事件流。我已经设法使用Jersey Java库实现了这一点。然而,由于我们的大多数客户机代码都使用Spring,所以我想举一个例子来说明如何使用Spring实现这一点。 我在Spring的服务器端找到了许多关于SSE的示例。但是,我找不到客户端的任何文档。 Spring是否在客户端支持SSE?如果是,我

  • 我正在开发一个非常简单的Java客户机/服务器系统(只是为了让我的脚沾满套接字)。由于某种原因,我一直收到“套接字已关闭”错误。。。这是我的密码。。 服务器文件 客户端文件 我在客户端的第41行得到了错误,然后在第46行得到了NullPointerException。。 提前感谢您的帮助。我只是想在这里学习。

  • 如果我正确理解了服务器发送事件的原则,那么每次客户端注册到EventSource时,它实际上会打开一个到管理事件的资源的新HTTP连接。与其他HTTP请求相反,连接保持活动状态,因此专用于此客户端的服务器进程/线程将一直运行,直到客户端断开连接。 如果我们有1000个客户端使用SSE连接到一个应用程序,该怎么办?我们是否会有1000个进程/线程(做同样的事情)并发运行以处理SSE?我想我错了,但如

  • 问题内容: 我正在尝试使用JmDNS在客户端服务器应用程序中启用服务发现。我完全理解服务器端的服务注册表,其代码类似于以下内容: 但是,我在弄清楚如何让我的客户端从注册的服务中检索端口号和IP地址并使用此数据打开TCP连接时遇到了麻烦。我搜索了有关如何使用JmDNS的示例,但无济于事。这里有人可以给我一些基本的例子吗?或者,如果有人在JmDNS上有指向良好资源/教程的链接,可以请他们提供吗? 注意

  • 我到处查看,试图找出传输级别上服务器发送的事件是什么。我还是不确定。 这两个来源都声称它们“只是http”。然而,我至少可以用两种方式来解释这种说法。 当我第一次阅读这些文章时,我假设这意味着服务器在同一端口上向客户机发起请求,之前已经从客户机向服务器发出了一些其他常规http请求。这应该适用于普通家庭路由器的地址转换,但我想知道防火墙在公司环境中的含义。 然而,后来,我尝试在Silverligh