如何在没有 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

如何在没有 html/js 的情况下捕获 fastapi websocket 消息?

如何使用后台模式从本地 Web 服务器创建本地通知

如何在没有徽章编号的情况下推送通知?

如何在没有firebase的情况下显示推送通知?