V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hhh798
V2EX  ›  程序员

站内消息的客户端解决方案

  •  
  •   hhh798 · 2019-09-06 09:55:45 +08:00 · 2988 次点击
    这是一个创建于 1665 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我在做一个内容产品,现在考虑实现站内消息功能,比如别人对你的文章点赞了、评论了、或者评论被管理员删除了或者别人给你发私信了了,那么要在 APP 端即时显示消息提醒,一般是采取什么解决方案呢?客户端轮询查看有没有新消息吗?
    20 条回复    2019-09-06 18:01:35 +08:00
    TypeErrorNone
        1
    TypeErrorNone  
       2019-09-06 10:10:29 +08:00
    轮询请求,这个请求只做 app 的状态查询。
    可以针对这个接口单独部署几台服务器,支撑个几万 qps 没问题。
    salamanderMH
        2
    salamanderMH  
       2019-09-06 10:12:14 +08:00
    websocket,你看看 https://segmentfault.com/ ,它就是这么做的
    hhh798
        3
    hhh798  
    OP
       2019-09-06 10:20:20 +08:00
    @TypeErrorNone 刚开始就一台服务器支撑所有服务,感觉轮询有点傻傻的
    @salamanderMH 有没有文章啊
    ssynhtn
        4
    ssynhtn  
       2019-09-06 10:23:11 +08:00
    轮询你就等着被卸载吧
    crysislinux
        5
    crysislinux  
       2019-09-06 10:29:10 +08:00
    我在想这个东西到底该不该对匿名用户实现,websocket 连接太多了压力也不小。
    hhh798
        6
    hhh798  
    OP
       2019-09-06 10:30:31 +08:00
    @ssynhtn @crysislinux 那行业内的解决方案一般是啥呢
    xiangyuecn
        7
    xiangyuecn  
       2019-09-06 10:30:54 +08:00
    这不就是推送咩。简单的用第三方,把 ios、华为、oppovivo 的自家推送集成一下 就 ok 了。

    即时?惊呆了,app 活着就即时吧,死了就离线推
    hhh798
        8
    hhh798  
    OP
       2019-09-06 10:38:11 +08:00
    @xiangyuecn 不是 push,是站内消息
    zqwcrystal
        9
    zqwcrystal  
       2019-09-06 11:23:35 +08:00
    可以用静默推送实现,客户端监听到推送之后做请求
    mshadow
        10
    mshadow  
       2019-09-06 11:25:46 +08:00
    @nioncodotcom 也是用 push
    nvioue
        11
    nvioue  
       2019-09-06 11:38:52 +08:00 via Android
    push 加 pull 结合
    niubee1
        12
    niubee1  
       2019-09-06 11:50:12 +08:00
    现在很多浏览器都支持推送服务
    Takamine
        13
    Takamine  
       2019-09-06 12:31:35 +08:00 via Android
    轮询着被卸载+1。
    一般在几个交互逻辑里触发站内信消息推送就好吧。
    crayygy
        14
    crayygy  
       2019-09-06 12:35:11 +08:00 via iPhone
    push 收到以后做区分,前后台单独处理即可
    Raymon111111
        15
    Raymon111111  
       2019-09-06 12:37:21 +08:00
    怎么可能是轮询...

    消息队列+push
    finab
        16
    finab  
       2019-09-06 12:40:25 +08:00
    客户端做一个 Pull 操作,触发可以取请求未读消息

    然后定义一些场景,触发这些场景就去 做 Pull 操作
    例如打开 APP、重新进入 APP、进入消息页面、收到新消息推送 ... 等等

    我觉得又不是聊天,用不上实时,能保证用户能看到就行
    opengps
        17
    opengps  
       2019-09-06 13:08:49 +08:00
    所有推送类应用:要么轮训,要么 tcp 长连接
    xd314697475
        18
    xd314697475  
       2019-09-06 16:18:24 +08:00
    websocket 或者使用第三方推送,eg.极光推送
    Macolor21
        19
    Macolor21  
       2019-09-06 17:32:07 +08:00
    websocket
    laravel
        20
    laravel  
       2019-09-06 18:01:35 +08:00
    mqtt
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5178 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 01:19 · PVG 09:19 · LAX 18:19 · JFK 21:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.