如何在没有 websocket 的情况下通知
Posted
技术标签:
【中文标题】如何在没有 websocket 的情况下通知【英文标题】:How to notify without websocket 【发布时间】:2019-07-04 12:55:12 【问题描述】:我想在我的 react 应用程序中集成一个简单的通知系统。我想通知例如: - 新帖子(当用户发布系统需要时间对附加媒体和出版物进行转码时) - 缺少设置(用户需要编译一些信息) - 有趣的帖子等。
有一种简单的方法可以将 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 后端意味着浪费金钱.
【问题讨论】:
【参考方案1】:目前我能想到的主要有3种通知方式……
-
长轮询(使用 ajax 等)
Websocket
推送通知
推送(虽然)需要用户的许可
【讨论】:
谢谢。就我而言,我认为长轮询是更好的选择。只是我需要在长时间不活动的情况下停止 Ajax 请求。我还在寻找解决方案以上是关于如何在没有 websocket 的情况下通知的主要内容,如果未能解决你的问题,请参考以下文章
NodeJS 如何在没有 WebSockets 的情况下处理持久连接?
如何在没有 shell 命令的情况下运行 websocket