// Server-Sent Events (SSE) 示例代码
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/sse")
public class SSEServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置响应头
resp.setContentType("text/event-stream");
resp.setCharacterEncoding("UTF-8");
PrintWriter writer = resp.getWriter();
try {
for (int i = 0; i < 10; i++) {
// 发送事件数据
writer.write("data: Message " + i + "\n\n");
writer.flush();
Thread.sleep(1000); // 模拟延迟
}
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
writer.close();
}
}
}
@WebServlet("/sse") 将这个 Servlet 映射到 /sse 路径。resp.setContentType("text/event-stream"); 设置响应内容类型为 text/event-stream,这是 SSE 所需的 MIME 类型。writer.write("data: Message " + i + "\n\n"); 发送事件数据。每个事件以 data: 开头,并以两个换行符 \n\n 结束。Thread.sleep(1000); 用于模拟每秒发送一条消息。finally 块中确保 PrintWriter 被关闭。这段代码展示了如何使用 Java 的 Servlet 实现 Server-Sent Events (SSE),使服务器能够向客户端推送实时更新。
上一篇:java中abstract的作用
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站