只需轮询网络服务器

时间:2016-04-28 19:33:07

标签: javascript browser notifications push-notification service-worker

我需要创建浏览器推送消息,即使页面未打开时也是如此。但我有一些限制,因为我在Salesforce中开发它。所以当页面加载时我有javascript块调用后端方法并在回调函数中得到响应。我发现在teoretically我可以使用serviceWorker,它可以通过postMessages与页面通信,它可以显示通知。我已经找到了通过单击按钮显示通知的示例,但我仍然需要找到使用serviceWorker与页面通信以获取服务器响应的方法。 我已经看过有关serviceWorker http://www.html5rocks.com/en/tutorials/service-worker/introduction/的指南,但对我来说不是很清楚。我不想将任何中间件用作GCM,只在客户端使用JS。 请给我一些示例代码来实现它。

1 个答案:

答案 0 :(得分:-1)

否....目前,只有一种方法可以在使用服务工作者api关闭网站时向用户显示推送通知。

第一种方式只会在您的网站开通时向您显示推送通知。 1)Ajax轮询    这种方法被称为Facebook使用的彗星方法。在此方法中,您将定期轮询到服务器(意味着您需要定期对服务器执行ajax调用)以检查用户是否有任何要显示的新通知。请检查以下代码      $(document).ready(function(){             setInterval(updateCount,120000);         }); var updateCount = function(){          var url = example.com //提供自己的网址

    $.ajax({

        url:ajaxURl,
        type: "POST",
        dataType:"json",
        error: function(error){
                console.log("Error occured in the ajax call while saving the endpoint",error);
             },
        success:function(data){
          console.log(data)
          if(data == new notifcation){
          //then show notification 
          }
        },
        timeout:60000
    });

};

This is simple approach to show the notification to the  user. 
Cons:- 1)It will trigger to many ajax call to the server which will eventually increase the load on the server.
        2)User have to be logged in to the system then only you can show notification to end user.

2)服务工作者Api     在这种方法中,您需要在客户端浏览器中注册服务工作者api。一旦服务器工作者api注册,它将在浏览器的后台运行并等待推送事件。     当推送事件触发时,即使您的用户未登录到您的网站,服务工作者api也会触发推送通知。

Cons:- 1)the service worker api will only run in the certain browser 
       2)Your website should https for using the service worker api as they already mention in the article.

我希望我回答你的问题..