// Java SSE (Server-Sent Events) 示例代码
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 {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 设置响应内容类型和字符编码
response.setContentType("text/event-stream");
response.setCharacterEncoding("UTF-8");
// 获取 PrintWriter 对象,用于向客户端发送数据
PrintWriter writer = response.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
。response.setContentType("text/event-stream");
设置响应的内容类型为 text/event-stream
,这是 SSE 协议要求的 MIME 类型。response.setCharacterEncoding("UTF-8");
设置字符编码为 UTF-8,确保消息可以正确显示。response.getWriter()
获取一个 PrintWriter
对象,用于向客户端发送消息。data:
开头,每条消息以两个换行符 \n\n
结束。for
循环模拟每隔一秒发送一条消息,总共发送 10 条消息。InterruptedException
并打印堆栈跟踪信息。finally
块中关闭 PrintWriter
,确保资源被正确释放。上一篇:java string[]
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站