node.js - 如何确保当应用程序在 Angular PWA 中处于后台时 socket.io 不会关闭连接
问题描述
socket.on('new-notification', function(data) {
let room_id = data.room_id;
var receiver_id = data.receiver_id;
var booking_request_id = data.booking_request_id;
var message = {
to: notification_payload,
collapse_key: 'green',
notification: {
title: 'Tittle',
body: "New message from User",
icon: site_url + 'assets/icons/icon- 72x72.png',
sound: 'default',
url: redirect_url,
},
data: {
title: 'Tittle',
body: "New message from User",
icon: site_url + 'assets/icons/icon- 72x72.png',
sound: 'default',
url: redirect_url,
}
};
fcm.send(message, function(err, response) {
if (err) {
console.log("Something has gone wrong!");
} else {
console.log("Successfully sent with response: ", response);
}
});
}
});
}
else {
}
}
});
});
我有一个 Angular PWA,它使用 Socket.io Node 和 express 服务器进行实时消息传递,并使用 Firebase Cloud Messaging 推送通知。消息传递工作正常,但问题是当用户离开应用程序时,他们将无法接收通知,而只能在积极使用应用程序时接收。我的假设是当用户离开应用程序时 Socket io 正在断开连接。那么即使应用程序在后台运行,有什么方法可以确保套接字保持活动状态。我附上了我的通知片段。对你的帮助表示感谢
解决方案
为此,您需要为 Angular 设置一个服务工作者,当设备通常将应用程序置于睡眠模式时,它们会运行并保持您的应用程序处于活动状态以执行某些任务。
您可以在此处关注有关创建服务工作者的最新 Angular 文档
推荐阅读
- python - 如何从选择的嵌套列表中获得随机选择?
- html - “Not a Descendant Of”的 CSS 表达式
- bash - 将字符串签入文件并提取一部分以将其写入 BASH 中的文件
- c - 如何在 execl 系统调用中使用 cat 命令创建文本文件?
- parsing - Haskell-src-exts 包的示例
- ffmpeg - x265:如果使用 frame-threads=1,我会得到更小的文件吗?
- node.js - 安装 AWS Amplify CLI 时出错
- python - 如何将 3 维 NumPy 数组转换为数据框?
- java - MutableLiveData.observe() 中的 Toast 消息重复工作
- google-sheets - 当列中的单元格值小于 0 时,从 Google 表格发送电子邮件警报