v2ex 或者其他论坛的新消息通知是怎么做的?

2019-05-13 17:16:46 +08:00
 Vfei2017
2056 次点击
所在节点    问与答
16 条回复
HuasLeung
2019-05-13 17:21:01 +08:00
RabbitMQ 轻松实现
nimrc
2019-05-13 17:32:13 +08:00
微博 推拉模型
ylsc633
2019-05-13 17:50:18 +08:00
v2 应该是 你加载页面 然后主动去拉取 消息通知!

这样最方便,不占带宽,不需要连接..

对于实时性不高的,这样做最方便.. 也最好实现
Vfei2017
2019-05-13 17:53:29 +08:00
@ylsc633 那拉取的时候怎么识别新 /老的回复?
Vfei2017
2019-05-13 17:55:03 +08:00
@HuasLeung RabbitMQ 感觉好复杂
Vfei2017
2019-05-13 17:56:21 +08:00
@nimrc 微博 推拉模型有相关的文章吗
woodensail
2019-05-13 17:57:20 +08:00
这块主要分两个技术点,一个是通知推送,另一个是消息订阅。
前者的关键词是 「长连接 /长轮询 /websocket 」
后者的关键词是 「消息订阅 /推拉模型」
DavidNineRoc
2019-05-13 18:00:17 +08:00
你没有点击或者阅读过都是新消息...
v2 应该是刷新页面的时候查询一下是否有未读消息
常见的做法是轮询.
即时推送可以考虑 websocket
imningfeng
2019-05-13 18:04:37 +08:00
并不是及时的,有缓存。
ylsc633
2019-05-13 18:06:53 +08:00
@Vfei2017 V2 的是 如果你点开 未读消息, 未读消息页面加载的时候,会把当前页面未读消息标记成已读状态!

下次再拉取的时候,这几条就是已读的了... 然后新增的未读 继续插入数据!

如果想做知乎那种(不刷新页面,但是一旦有消息,页面消息那有提醒,这种一般都是 websocket) 这种处理起来麻烦,还占带宽!
nimrc
2019-05-13 18:08:12 +08:00
@Vfei2017 百度为您找到相关结果约 2,960,000 个
Vfei2017
2019-05-13 18:09:55 +08:00
@ylsc633 微信小程序里想做一个类似的功能用 websocket 是不是不太好
passerbytiny
2019-05-13 18:11:38 +08:00
楼上几位,除了 3 楼,全部在一本正经的胡说八道。不上插件,v2ex 有新消息通知吗?

@Vfei2017 #4 V2 没有新消息通知,只有未读消息个数。未读消息个数是静态信息。别人新增回复如果 @你了,你会多一个消息,同时未读消息个数+1。你打开 /notifications 的时候,未读消息个数 重置为 0。其他论坛的新消息通知,一般就多了一个操作:js 异步死循环轮询服务器查询未读消息个数。v2explus 插件应该也是轮询服务器获取未读消息个数。
Vfei2017
2019-05-13 18:18:39 +08:00
@passerbytiny v2 确实是这样,刷新当前页面会有新的回复,但是只要不点击右边的‘ 1 条未读消息提醒’,就算刷出来新的回复,这个提醒也不会消失,只有点了之后提醒才消失
ylsc633
2019-05-13 18:35:14 +08:00
@Vfei2017 我感觉小程序用 websocket 不太好, 另外,我也不太清楚好不好实现!

我写过一个论坛, 消息通知是跟 v2 差不多的, 主动拉取的!

然后 同时也为了这个论坛,写了个小程序, 那时候小程序功能比较简单.. 同时 新消息功能跟 页面版也是一样的,按需拉取!

现在 没有关注过小程序了.. 不过我玩的几个小程序 有专门的微信消息通知...

比如我关注了一个小程序,然后小程序里有新消息, 我微信的 消息通知(Service Messages) 会收到推送! 具体实现方式目前未了解.. 你有兴趣可以了解下
Vfei2017
2019-05-13 18:55:25 +08:00
@ylsc633 像百度贴吧微信小程序,这种应该还是轮询的方式吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/563727

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX