小编YM-*_*-91的帖子

Server Sent Event如何向特定客户端发送响应

在Server Sent Event中,它始终向所有客户端发送相同的响应.但我想知道的是,如何使用java向只有一个客户端发送响应.

这是我在sw.js(SSE)中定义的事件

var eventSource = new EventSource("HelloServlet");
eventSource.addEventListener('up_vote',function(event){
    console.log("data from s" , event.data);
    var title = event.data;
    self.registration.showNotification(title, {
          'body': event.data,
          'icon': 'images/icon.png'
        })
});
Run Code Online (Sandbox Code Playgroud)

我想仅向特定用户显示此通知.不适合每一个人.HelloServlet是我的servlet,它包含了这个,

response.setContentType("text/event-stream");   
        response.setCharacterEncoding("UTF-8");
        PrintWriter writer = response.getWriter();
        String upVote = "u";
        String downVote = "d";
        for(int i=0; i<10; i++) {
            writer.write("event:up_vote\n");
            writer.write("data: "+ upVote +"\n\n");
            writer.write("event:down_vote\n");
            writer.write("data: "+ downVote +"\n\n");
            writer.flush();
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        writer.close();
Run Code Online (Sandbox Code Playgroud)

javascript client-server push-notification server-sent-events server

3
推荐指数
1
解决办法
2865
查看次数

增加服务人员的生活时间

我正在尝试使用服务工作者的推送通知.使用我自己的服务器发送通知,eventSource用于建立连接.打开网页后,服务工作人员运行得很好.但它在几秒钟后停止.我想要的是运行服务工作者而不会停止.我希望它一直运行,直到浏览器打开.谁能推荐一种方法来做到这一点.?

这是我的ServiceWorker JS

/**
 * 
 */
'use strict';
var eventSource2 = new EventSource("Servlet");
console.log('Started', eventSource2);
eventSource2.addEventListener('install', function(event) {
    eventSource2.skipWaiting();
    console.log('Installed', event);

});

eventSource2.addEventListener('push',function(event) {
                    console.log(event.data);
                    var title = event.data;
                    self.registration.showNotification(title,{
                                        'body' : event.data,
                                        'icon' : 'http://icons.iconarchive.com/icons/designbolts/free-multimedia/1024/iMac-icon.png',
                                        'tag' : 'click',
                                    });
                    console.log("data from down", event.data);
                });

eventSource2.addEventListener('activate', function(event){
    console.log('Activated', event);
});

eventSource2.addEventListener('fetch', function(event) {
    console.log('Push message', event);
});
Run Code Online (Sandbox Code Playgroud)

javascript addeventlistener push-notification server-sent-events service-worker

3
推荐指数
1
解决办法
1411
查看次数