用户在线状态
1.登录设备类型
有度支持所有的系统平台,包括部分国产操作系统,包括:
设备类型 | 设备名称 | 备注 |
---|---|---|
桌面端(各类PC电脑) | windows、mac、rtx、ipad、linuxDEB、linuxRPM | |
移动端(各类手机设备) | iPhone、android、androidPad |
2.状态优先级
当同时登录多个设备的时候,用户的显示状态以高优先级的设备登录状态为准。比如用户A同时登录了WindowsPC端和iphone手机端,WindowsPC端是离开状态,则其他人看到A的状态就为【离开】。
有度的登录状态优先级基本原则:桌面设备优先于移动端设备。
设备类型 | 登录状态 | 优先级 | 显示状态 |
---|---|---|---|
WindowsPC(含RTX) | 在线 | 1 | 在线 |
Mac | 在线 | 2 | 在线 |
WindowsPC(含RTX) | 离开 | 3 | 离开 |
Mac | 离开 | 4 | 离开 |
iPad | 在线 | 5 | 在线 |
手机端(各类手机设备) | 在线 | 6 | 手机在线 |
所有设备 | 离线 | 7 | 离线 |
3.状态同步机制
用户登录、离线时的状态变化,由有度的状态服务记录并提供接口供其他服务查询,同时状态服务会把用户的登录状态变化主动通知那些正在查看该用户状态的其他用户(比如正在与之对话的用户)。
常见的状态更新场景:
-用户A在客户端展开某个部门,客户端会向服务器请求展开部门下的所有用户的在线状态并进行显示。
-如果这个时候,该部门下的其中一个用户状态发生了变化,则状态服务会主动通知用户A该变化,用户A的页面将自动刷新状态显示。
-用户A与用户B正在对话,用户B离线,则状态服务会主动通知用户A,用户B离线了;用户A将在会话窗口中看到用户B的状态由在线变为了离线。
4.客户端状态处理
4.1.桌面端
各类台式电脑设备,包括Windows电脑、Mac电脑;桌面端的登录状态取决于客户端电脑与服务器的网络连接情况,是实际连接状态。
【在线】:桌面端一旦登录成功,即与服务端处于TCP长连接状态,状态显示为【在线】。
【离线】:当切换账号、注销退出、网络断线、后台取消登录权限,与服务端的TCP连接将断开,状态显示为【离线】(如果有其他客户端在线,则会显示其他客户端的登录状态)。
【离开】:用户可以在已登录的情况下,将自己的状态设置为【离开】,以告知他人自己没在电脑旁。
4.2.移动端
包括各类安卓系统手机和苹果系统手机。
移动端的状态机制与桌面端不同,主要是一个逻辑状态,只要登录完成,缺省情况下就会被视为在线(而不管网络连接情况如何);部分安卓手机以及全部苹果手机,与服务器不是TCP长连接的,在手机端APP退到后台后,就会被手机系统杀掉进程(为了省电),从而与服务器断开,但这个时候,仍然会被视为在线;当有新消息时,手机系统会推送一条通知给到手机端提醒用户有新消息,用户打开APP时,APP会重现建立与服务器的连接,并下载新消息到手机本地。
【在线】:移动端手机一旦登录成功,即视为其状态为【在线】。
【离线】:当切换账号、注销退出、后台取消登录权限后会显示为【离线】状态;网络断线不会影响状态。
【离开】:移动端没有【离开】状态。