一个帐号多设备登录的处理

来源:互联网 发布:淘宝交钱需要交多少钱 编辑:程序博客网 时间:2024/06/05 04:34
    多设备登录的问题处理,远没有看起来那么简单。除了设计理念,安全方面的考量外,在技术上处理
也是个麻烦事。
    列几种情况:
    情况A:
      同用户在多个同类型设备上登录。 如,同一个帐号在多个Android手机上登录.
    情况B:
     同用户在多个不同类型设备上登录。如,同一个帐号在手机,PC或Pad上登录.
    情况C:
     在一台手机上,用同一个帐号登录同一个产品旗下的两个不同APP.
        ......

所以情况远比想的麻烦.而且还会带来其它问题.   

    1.安全问题,支持多设备的话,有可能出现,别人能在另一个你已登录过的设备上,
      看到当前你和别人的消息记录。另外,要是某一台设备丢失了,只要不退出。就一直可以看到消息记录等。
    2.如果控制不好,服务端会对用户连接管理失去控制。
    3.性能也是个麻烦事
    4.多设备消息怎么同步
    ......

不过有些业务情况就是需要支持,没办法。


      我把怎么处理一个帐号多设备登录简化成三个主要解决的问题.

1. 能同时维持同一帐户的多设备长连接。
要有一个好的组合来区分各种情况.
我想到的大致参数如下:
       userID + appID + Platform + DeviceType | 所连serviceID     //IOS_DeviceToken
    
   

2. 如何群发至同一帐户的多个登录设备
    只要订阅了同一个userID,则 PUB/SUB 模式即可

3. 多设备离线消息的拉取与同步
   仅以IM消息为例,可以用下图的方式:
 
     

         每个用户在服务端保存一个消息总数,一个最大已读数(不管是哪个设备读的)。 然后客户端本地缓存一个已读消息的最大消息ID.  

 通过两相对比,由客户端确定要拉取的消息范围。

         放客户端,让用户在得到用户的消息状况后,去决定拉取多少条消息,而不是放服务端的原因之一是,这样更灵活点。

万一登录的是个新设备呢?或者每页显示行数发生变化了之类。

      先记录到这,真要实现出来远不是个容易事。 牵扯很多东西,不然也不会到现在为止,还有些第三方服务商仍不支持这个功能。


 BLOG: http://blog.csdn.net/xcl168


0 0