请选择 进入手机版 | 继续访问电脑版

默认
发表评论 6
[已回复] 求教使用MobileIMSDK服务端定时对不同的组推送不同的消息
阿里旺旺图片20180224192356.jpg

我想实现服务端对不同的组推送不同的消息,我自己建了一个对象来存分组,我在服务端启动的时候,起了一个timer,每隔2秒循环一下分组,对每个组里的在线用户发消息,假如分组越来越多,或是逻辑算的时间长了,超过了timer的间隔时间,可能逻辑就错了,请问有什么好的思路或建议吗?

还有我自己建的组想和OnlineProcessor中的用户一样,都是时时更新的,这个是自己循环OnlineProcessor去同步,麻烦给点思路,谢谢啦。

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:MobileIMSDK
上一篇:[已回复] MobileIMSDK的sendData发送数据不完整的问题?下一篇:[已回复] MobileIMSDK的iOS端在网络不通时发送消息也会返回0 成功?
推荐方案
评论 6
先回答第一个问题,关于怎么能加快推送效率、容错的问题:
这个问题从业务上来说不复杂,但要实现起来还是要动一些脑筋,你可以弄一个生产者消费者模型出来,在一个Timmer周期到来的时候启动多个线程同时工作从而加快效率。

你想单独维护自已的在线列表的话,直接在服务端的回调里监听用户上线、下线回调就行了(OnlineProcessor也是通过这个原理实现的,请放心使用):
API文档请见:ServerEventListener用户上线了就加入到你自已的列表,下线了就从列表中移除,就是这么简单
QQ截图20180224200315.png
签名: 《小白必读:闲话HTTP短连接中的Session和Token》http://www.52im.net/thread-1686-1-1.html
非常感谢回答,我这两天写了一下代码,但是还是有点思路上想不通的地方,请指点一下。

1,“在一个Timmer周期到来的时候启动多个线程同时工作从而加快效率。”        是不是timer执行一次,开一个新线程去给整个组发消息,这样线程之间不影响?

2,生产者消费者模型我知道点皮毛,是不是共同维护一个消息队列,服务端只往里加但不发送,在客户端定时的是队列里取?

3,我想做一个小游戏,一个人新建一局,几个人加入该局,开始摇奖,这几个人就是一组,摇奖的信息就给该组发送,然后可能有很多组,就想实现这么个场景。
4 楼: JackJiang Lv.9 百尺杆头 精华之王 终身成就 3 个月前 来自手机 | 显示全部楼层
如果是照你说的要做的就是摇奖游戏,为何定时发送?摇出来就发给这个组不就行了吗,跟群聊道理一样啊

我当时是想,摇奖的时候,转盘每动一下,要从server上同步一下组里的信息,再分发给组里的各个用户。

你说的意思我大概明白了,就说建组这个人发一个开始游戏,然后server把这个群发给成员,各自成员的手机转盘就开始转,不用同步server的数据,之后建组的人发一个结束游戏,这时候把算出的结果,群发给成员,各自成员的转盘收到结果,并停止转动。 整个过程 建组的人一共发两次消息。
引用:xxfx007 发表于 2018-02-27 09:42
我当时是想,摇奖的时候,转盘每动一下,要从server上同步一下组里的信息,再分发给组里的各个用户。

你 ...

抽奖的过程不需要发,每个人只需要收到两个指令:开始、结束,就可以了。
过程你完全可以在各自的端做动画模拟就行了,定时发完全没有意义,应从实际出发,不要理想化
签名: 《小白必读:闲话HTTP短连接中的Session和Token》http://www.52im.net/thread-1686-1-1.html
明白了  太感谢了
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部