javascript - 如何在没有 websocket 的情况下通知
问题描述
我想在我的反应应用程序中集成一个简单的通知系统。我想通知例如: - 新帖子(当用户发布系统需要时间对附加的媒体和出版物进行转码) - 缺少设置(用户需要编译一些信息) - 有趣的帖子等。
有一种简单的方法可以将 websocket(如 socket.io)添加到带有 aws lambda 后端的 reactjs 应用程序中吗?
所有通知都不需要实时读取,也许每 2 分钟一次 ajax 调用可以解决我的问题,但是,在这种情况下,如果应用程序不使用,有人可以帮助我避免 ajax 调用(比如如果应用程序仍然存在在前台选项卡中打开...)
componentDidMount() {
this.liveUpdate()
setInterval(this.liveUpdate, 120000);
}
liveUpdate() {
axios.get(endpoint.posts+'/live/', cfg)
.then(res => {
// ...
});
}
此代码在页脚组件中,每 120 秒调用一次,但如果用户在浏览器中打开应用程序而不使用它,调用仍然会发生,这在 lambda 后端意味着浪费金钱。
解决方案
目前我能想到的主要有3种通知方式……
- 长轮询(使用 ajax 等)
- 网络套接字
- 推送通知
推送(虽然)需要用户的许可
推荐阅读
- flutter - 如何在 Flutter 中忽略整个文件的 lint 规则?
- prometheus - 减去范围的第一个值以显示基于 0 的计数器
- c# - 如何使用 C# 在 Visual Studio 中创建切换按钮?
- c# - 如何根据某些条件退出录制并在ranorex中执行其他录制模块
- image - 奇怪的预测输出(OCR CRNN)
- winapi - 为什么使用 SM_REMOTESESSION 查询成功但 WTSIsRemoteSession 失败?
- amazon-web-services - 如何在 aws-cli 中对“list-tasks”的结果进行排序?
- arrays - MongoDB $elemMatch 查找多个元素
- python - 更改熊猫中的列值应用另一个函数
- c++ - count_if 中外部值的比较