一、数据库好友实体与线上对应
1、一次读取数据库所有用户信息展示。
2、一一对应 (通过链接用户的Id一一对应)
/// <summary> /// 客户端连接的时候调用 /// </summary> /// <returns></returns> public override Task OnConnectedAsync() { Trace.WriteLine("客户端连接成功"); return base.OnConnectedAsync(); }//所有链接的客户端都会在这里
要有所关联,每行记录的id 必须和链接时声明的id对应
每行记录的id 容易取,即一次性读取,
连接时候的id --对应。
好友列表和消息列表2种情况
已知道:能获取所有客户端的链接(这个链接会非常大,多少亿人的链接,但是自己账户的人确实很少),
1、所以一个用户刚登陆的情况:
就要读取数据库该用户所有好友,将链接的所有客户端有该用户好友的全部点亮。
2、分组也是如上一样
3、消息的话情况
3、1 一方在线的情况下 通过客户端发送到我们的Signalr中转服务中,我们先存储数据库设置未读,在线则推送,否则取消
3、2 上线的情况 客户 但是 用户先读取用户列表点亮,然后才有消息之说,判断是否有未读消息,有就从数据库读取消息推送到客户那边。
并将消息状态更改已读 ,然后 根据用户是否在线,推送成功消息的id表示展示效果已读。