我是 SSE - 服务器发送事件实现的新手。 我正在尝试使用 java jakarta.HttpServletRequest 实现 SSE。
import java.io.IOException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.PushBuilder;
@WebServlet("/check-push")
public class PushServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
final String titleText;
PushBuilder builder = req.newPushBuilder();
System.out.println(builder);
}
}
req.newPushBuilder()
始终返回null。
我尝试将HTTP的配置更改为2 使用自签名证书和 server.xml 中所需的配置
但是不起作用。
如果我有什么需要实施的地方,请指导我。 预先感谢您的帮助。
使用 tomcat 10.1 实现此功能需要采取哪些必要步骤 我真的需要 tls 证书来实现 SSE 还是我也可以在 Http 1 中实现它。
PushBuilder builder = req.newPushBuilder();
这与 SSE 完全无关。
这是用于 HTTP/2 服务器推送 (RFC 7540),它与服务器发送事件 (HTML Living Standard) 完全不同。
基本上,HTTP/2 推送允许您通过请求标头向客户端发送页面资源(基本上是 CSS/JS/图像文件的 URL),以便客户端可以选择预取它们,而无需按顺序解析整个 HTML 页面找到他们。
为了在 servlet 容器上使用 SSE,请改用 JAX-RS API。它不是由 Servlet API 提供。由于 Tomcat 不是一个Jakarta EE 兼容服务器,而是一个准系统 JSP/Servlet/EL/WebSocket 容器,因此您有 2 个选择:
如果您希望手动安装 JAX-RS,您首先需要选择 JAX-RS 实现并阅读其文档。以下是可用的 JAX-RS 实现,请选择其中之一。
安装 JAX-RS 或切换到普通 Jakarta EE 服务器(无需手动安装 JAX-RS)后,您可以按照第 9 章开始实现 SSE。 JAX-RS 文档。