V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
rizon
V2EX  ›  程序员

[求助] 手机端 app 实时接收一个服务端事件的优雅方案

  •  
  •   rizon ·
    othorizon · 77 天前 · 2085 次点击
    这是一个创建于 77 天前的主题,其中的信息可能已经有所发展或是发生改变。

    手机端的 app ( ios 、android )。
    需求是想要尽可能实时的接收服务端主动发起的一个事件,不知道有什么方案可以做。

    最简单的是轮询,但是几秒钟轮训一下总觉得太不优雅。

    再者就是 websocket 的,但是这样服务端要维护所有的客户端的长链接,对服务端架构要求和成本变高了。

    然后我就不知道有什么好的方案了,求大佬们指导。

    说到这,我也好奇,打车、外卖、共享单车这类产品他们是怎么做的实时刷新数据的?

    第 1 条附言  ·  77 天前
    看到大家回帖我突然意识到。
    可以用长链接,我没必要自己搭建服务啊。有第三方服务可以用不就行了。

    所以不管是 websocket 还是 MQ 。
    请大家给推荐一下合适的,这种用于客户端和服务端通信的云服务吧。谢谢
    第 2 条附言  ·  77 天前
    感谢大家的帮助。
    目前初步决定采用 MQTT 协议, 托管 broker 服务使用 emqx 家的。(如果有更好的推荐,欢迎推荐哈,谢谢)。

    目前的场景主要是服务端推送客户端。

    如果未来有服务端接收的需求:
    如果采用云服务器部署,没什么问题。
    如果服务端未来采用 servless 架构,则使用 mqtt 转 http 协议来实现通知。

    以上分享给大家, 也作为自己的笔记留用
    16 条回复    2025-05-19 20:07:10 +08:00
    xnode
        1
    xnode  
       77 天前
    接入 第三方推送或者厂家的推送,或者使用 sse 自建
    CodingIran
        2
    CodingIran  
       77 天前
    移动端推送需要用户的授权,通常不会作为稳定的实时接收服务端消息的方案
    WebSocket 又被你拒了
    常用的只剩下 MQTT 和 Server-Sent Events(SSE) 了
    vincentWdp
        3
    vincentWdp  
       77 天前
    还是 websocket, 但是用这个: https://www.phoenixframework.org/
    lucasdev
        4
    lucasdev  
       77 天前
    想要实时肯定是要长连接的,websocket 没那么不能接受。

    可以看看极光推送,友盟 U-Push 的文档。
    rizon
        5
    rizon  
    OP
       77 天前
    @lucasdev 这是用来推送系统通知的吧。我是需要客户端内部接收通知用的。 客户端有 android 、ios 还有 unity 的
    cornorj6
        6
    cornorj6  
       77 天前
    MQTT
    calmWei
        7
    calmWei  
       77 天前
    SSE ,本质上也是一种轮训
    rizon
        8
    rizon  
    OP
       77 天前
    @cornorj6 是的,刚才调研了一下,目前感觉 MQTT 比较合适。正在找一个合适的 MQTT 托管服务
    lucasdev
        9
    lucasdev  
       77 天前
    @rizon #5 除了系统通知,这些平台也支持自定义消息,不显示在通知栏,而是自己注册回调在代码里来处理。
    sunny352787
        10
    sunny352787  
       77 天前
    什么类型的呢?公司的就直接用钉钉、企业微信、飞书的机器人呗
    sunny352787
        11
    sunny352787  
       77 天前
    @sunny352787 哦哦理解错了,忽略我说的...
    lqbk
        12
    lqbk  
       77 天前
    你这种 App 场景 如果消息到达率是关键指标 用 im 方案是最好,拓展性强、能接入系统级的推送服务、定位消息触达方便。

    就是得花钱。
    orcinus
        13
    orcinus  
       77 天前
    okkkk
        14
    okkkk  
       77 天前
    我倒是觉得长链接除了看起来不太优雅,对于资源有限,试错成本有限,时间有限的情况下。是最优雅的解决方案。低学习成本和低复杂度,蛮优雅的。

    所以还是要看给你的时间和资源是否足够你折腾,否则就长链接。性能瓶颈了再考虑优化的事。
    prosgtsr
        15
    prosgtsr  
       77 天前
    直播公司,用的 xmpp
    不过这是很多年前就用的了,现在你尽可以试试 mqtt 啥的呗。
    Andrue
        16
    Andrue  
       77 天前
    FOSS 软件领域有 unipush 这类项目,你可以参考下
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   954 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:19 · PVG 05:19 · LAX 14:19 · JFK 17:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.