EventSource java实际应用

今天想用EvevtSource 做一个文件导入的功能,因为文件导入后台处理需要花较长的时间,
并且不可预估,普通ajax请求就一定会超时,因为页面长时间无法响应。EventSource客户端接收到
服务器端的响应数据之后,根据event事件值,找到EventSource对象对应的事件监听器。
EventSource推送的前端代码实例:

EventSource推送的后台代码(java需要把任务异步化,目前没有到有用的解决方案):
public void eventSource(HttpServletRequest request,
HttpServletResponse response) throws IOException,
InterruptedException {
String url = request.getParameter("url");
if (StringUtil.isNotEmpty(url)) {
response.setContentType("text/event-stream");
response.setCharacterEncoding("UTF-8");
response.setStatus(200);

        PrintWriter pw = response.getWriter();

        pw.println("event:open");
        pw.println("data:我已经连接上了");
        pw.println("id:140312");
        pw.println("\n");

        pw.println("event:message");
        pw.println("data:还活着不要急!");
        pw.println("id:140313");
        pw.println("\n");
        int sum = 0;
        // sum = importCVSFileUtil(url);
        if (sum == 0) {
            Thread.sleep(5000);// 模拟阻塞
            pw.println("event:load");
            pw.println("data:我已经完成" + sum + "条数据的导入啦!byebye");
            pw.println("id:140314");
            pw.println("\n");
        }
        pw.flush();
        pw.close();

    }

}

你可能感兴趣的:(EventSource java实际应用)