允许:A 加 B 为好友,B 在 A 的 friend list 中;而 A 并不在 B 的 friend list 中。
B 上/下线,要求 A 要收到通知,如何做到呢?B 上线时,从 B 身上的数据,并不知道其在 A 的 friend list 中。
因为单服同时在线人数不多,一般就 4~8k,所以可以做一个当前在线玩家的好友列表 cache。任何一个玩家上/下线,则修改此 cache。
B => (A, C, ...) 表示,B 在 A, C, ... 等这些玩家的好友列表中。
B 上/下线,就可以通过此 cache 来做通知的事情。
此法比较灵活,可以做到“你的好友XXX上/下线”这样的通知。
不做“你的好友XXX上/下线”这样的通知,只是每次打开“好友栏”,可以看到在线的好友都是“亮”的。
这样可以在每次打开“好友栏”时,向服务器发起请求,更新一下自己所有好友的在线信息即可。