
比如要实现一个后端向前端定时推送数据的业务,每五分钟推送一次,连接的对象为每个用户(可以获取每个连接对象的 sid),推送的数据为每个用户 5 分钟内的账户余额,当然这只是模拟一个使用场景 1.每个用户连接之后,会有唯一的 sid,然后把该 sid 最为 room 标识来实现 1v1 推送,但是定时每 5 分钟推送一次,是不是每个用户连接都开启一个线程,然后在每个线程里开启 sleep? 2. 这种使用场景,是服务端 sleep 好还是前端定时向服务端请求数据好呢? 1 xnode 2019 年 12 月 20 日 1 我觉得不合适 不推送不等于 sleep 吧 2 前端向后端请求逻辑能清楚 |
2 065535 2019 年 12 月 20 日 一般客户端要定时收到消息有两种方式: 客户端定时主动拉取服务端数据,也就是客户端 sleep,然后拉取接口信息,这种的实时度要看定时的频率。 客户端服务端保持一个长连接,由客户端发起数据推送的请求,达到实时推送的效果。 建议使用“个推”、“极光推送”等这种推送服务。 |
3 klesh 2019 年 12 月 20 日 via Android 这么有规律的话,直接定时请示就好了 |
6 wysnylc 2019 年 12 月 20 日 5 分钟一次还不如写个接口让前端拉 websocket 等你需要实时更新数据再说,前期先用 http 轮询顶着 |
7 robot1 2019 年 12 月 20 日 每个用户开一个线程?? 2 千用户开 2000 个线程? python 随便一个异步 io 框架单线程定时推送 1 万用户轻轻松松 |
8 Leigg 2019 年 12 月 20 日 via Android 使用 ws 的场景: 单用户请求频繁(秒级别,如每秒一次),要求时延低(如弹幕),你看看你需求符合哪个? 你的这个需求直接在前端轮询是最简单最合理的方式。 |
9 lihongjie0209 2019 年 12 月 20 日 @robot1 #7 用不着, 一个简单的线程池就可以了 |
10 xmge 2019 年 12 月 20 日 如果不是经常更新的数据。 感觉 [定时拉去] 和 [定时推送] 都浪费性能。 最好是,如果后台数据有变化再通知前端。 长轮循 /socket/mqtt 都可以做到。 如果是经常更新的数据 感觉直接前端定时拉去更简单一点。直接走 http 就完事了。简单,方便,不易出错。 |
11 robot1 2019 年 12 月 20 日 @lihongjie0209 他这描述不详细 如没有 cpu 密集单线程就满足了 |
12 ClericPy 2019 年 12 月 20 日 点进来以前以为会聊 H5 那个 SSE... |
13 locoz 2019 年 12 月 20 日 实时性要求不高的东西...直接前端轮询吧 |
14 dark3212 2019 年 12 月 20 日 不是严格意义上的 5 分钟的话,可以起一个定时任务,5 分钟一次,循环给所有连接的客户端连接发送余额。 |
15 doublechenpaul 2019 年 12 月 20 日 感觉后端定时任务会好点 |
16 CzaOrz 2019 年 12 月 25 日 服务端 sleep 也可以,而且只需要 sleep 一次就够了 可以参考 aHR0cHM6Ly9naXRodWIuY29tL0N6YU9yei9QeXdzcwo= 里面的广播中间件( base64 ) |