首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >service-worker有没有办法在客户退出时得到通知?

service-worker有没有办法在客户退出时得到通知?
EN

Stack Overflow用户
提问于 2016-06-05 22:20:21
回答 1查看 371关注 0票数 0

我有以下设置。

服务器(localhost/index.html)

代码语言:javascript
复制
<script type="text/javascript">
        if('serviceWorker' in navigator){
            // Register service worker
            navigator.serviceWorker.register('service-worker.js').then(function(reg){
                    console.log("SW registration succeeded. Scope is "+reg.scope);
                }).catch(function(err){
                console.error("SW registration failed with error "+err);
                });
        }
    </script>

客户端(例如localhost/client1.html)

代码语言:javascript
复制
<script>
    function send_message_to_sw(msg){
        return new Promise(function(resolve, reject){
            // Create a Message Channel
            var msg_chan = new MessageChannel();

            // Handler for recieving message reply from service worker
            msg_chan.port1.onmessage = function(event){
                if(event.data.error){
                    reject(event.data.error);
                }else{
                    resolve(event.data);
                }
            };

            // Send message to service worker along with port for reply
            navigator.serviceWorker.controller.postMessage("Client 2 says '"+msg+"'", [msg_chan.port2]);
        });
    }
</script>

当客户关闭他的窗口时,有没有办法在服务人员中得到通知?

EN

回答 1

Stack Overflow用户

发布于 2016-09-27 03:11:50

beforeunloadunload事件添加事件侦听器是在关闭选项卡/窗口之前安排代码运行的标准方法。不能保证异步代码会在窗口被销毁之前执行,但这是您最好的选择。

但是,您没有解释为什么需要让服务工作者知道客户端窗口关闭的原因。你应该花点时间想想你的用例是否真的需要它。如果需要跟踪哪个客户端与哪些请求相关联,则可以利用fetch事件处理程序中的FetchEvent.clientId属性。如果需要获取完整的客户端列表,可以通过clients.matchAll()在服务工作线程中执行此操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37642935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档