节点 - 浏览器关闭时推送通知

Posted

技术标签:

【中文标题】节点 - 浏览器关闭时推送通知【英文标题】:Node - Push notification when browser closed 【发布时间】:2013-05-17 12:03:54 【问题描述】:

我是 node 和 socket.io 的新手。我刚刚做了一个带有推送通知的 chrome 扩展。因为我面临一个问题,当 Chrome 浏览器关闭时通知没有发送。服务器通知如下内容,但通知未发送。

info  - transport end (socket end)
debug - set close timeout for client kgcuzAOgn5-lrnuQI0Qb
debug - cleared close timeout for client kgcuzAOgn5-lrnuQI0Qb
debug - cleared heartbeat interval for client kgcuzAOgn5-lrnuQI0Qb
debug - discarding transport

这是我的代码

服务器

io.sockets.on( 'connection', function ( socket ) 
fs.watch( 'example.xml', function ( curr, prev ) 
  fs.readFile( 'example.xml', function ( err, data ) 
    if ( err ) throw err;    
  parser.parseString( data );
);
 );

  parser.addListener('end', function( result ) 

    // adding the time of the latest update
    //result.time = new Date();
    socket.volatile.emit( 'notification' , result );
  );
);

客户

var socket = new io.connect('http://website:8000');
console.log('client connected');

socket.on('notification', function(data)
console.log("message recieved1 = "+data);

    console.log("message recieved = "+data);
    showNotification(data)
    chrome.browserAction.setBadgeText( text : "1" );


);

 function showNotification(data) 
var havePermission = window.webkitNotifications.checkPermission();
  if (havePermission == 0) 
    // 0 is PERMISSION_ALLOWED     

var notification = webkitNotifications.createNotification(
  'http://website.com/favicon.ico',  // icon url - can be relative
  'Hello!',  // notification title
  data  // notification body text
);
// Hide the notification after the configured duration.
    //setTimeout(function() notification.cancel(); , 5000);

    notification.onclick = function () 
      window.open("http://website.com/favicon.gif");
      notification.close();
     resetBadgeText();
    
   chrome.browserAction.setBadgeText("text":"1");
    notification.show();
   else 
      window.webkitNotifications.requestPermission();
  
 

请帮我解决这个问题。

【问题讨论】:

也许您可以通过以下方式解决此问题:***.com/questions/3699357/… 【参考方案1】:

Chrome 推送通知仅在浏览器运行时有效。此外,一旦您关闭所有浏览器窗口,套接字将离线,这就是您收到此响应的原因。

【讨论】:

有没有办法在浏览器关闭时发送通知?? 不,浏览器关闭时无法发送通知。进程或服务应该在后台运行。我不确定您的初始要求。但是,您可以通过创建将在后台运行以保持套接字连接处于活动状态的服务来在移动设备上实现此目的。

以上是关于节点 - 浏览器关闭时推送通知的主要内容,如果未能解决你的问题,请参考以下文章

取消发送的 Web 推送通知

使用 azure 从网络到移动设备(跨平台)的网络/浏览器推送通知 [关闭]

哪种网络推送通知最可靠的技术? [关闭]

Xamarin.iOS - 设备关闭时推送通知

当我的 iPad 关闭时,只收到最后一个推送通知

只在当下推送通知?