【openfire添加好友流程梳理】

由于项目中需要改造openfire添加好友流程,所以梳理了一份报文和表字段流程关系:


1.1   PresenceType说起

unavailable, 下线

subscribe, 订阅

subscribed, 同意订阅

unsubscribe,   取消订阅

unsubscribed, 拒绝订阅

probe,探测

error;错误

说明:用户添加删除好友是发送Presence包

1.2   说说RosterItem中和订阅相关的枚举

SubType

    -1:删除好友关系

     0:没建立关系(可能存在没有接受的订阅)

     1:有发送订阅,并且被同意订阅,单向好友关系,和to对应

     2:有收到订阅,订阅同意了订阅,单向好友关系,和from对应

     3:双方互为好友,双向互为好友

AskType

      -1:没有发送订阅请求

0:发送订阅好友请求,等待对方接受请求

1:发送取消订阅好友请求

RecvType

    -1:没有接受到订阅请求

     1: 有接受到订阅请求,还没有接受

     2: 有接受到取消订阅请求

 

Sub(订阅)

remove -1:发送删除用户请求

none    0:用户没有建立好友关系

to      1:发送订阅请求且请求被接受了

from    2:接受好友订阅的请求

both    3:双方互为好友

Ask(是否有发送订阅请求)

""          -1:没有发送好友请求

subscribe    0:发送了好友订阅请求但是没得到回复

unsubscribe  1:发送了取消订阅好友的请求

Rec(是否有接受订阅请求)

""           -1:没有收到好友订阅请求

sub           1:收到好友的订阅请求但没回复

unsub         2:收到好友的取消订阅请求

 

 

1.3   再说ofroster(RosterItem对象对应)

 

一、单向添加好友:test10单向添加好友test07

1test10发起添加test07的请求:

C2S - RECV (1110016): Friends

C2S - SENT (1110016): Friends

C2S - SENT (1110016): 

C2S - RECV (1110016): 

C2S - SENT (1110016): Friends

C2S - SENT (25130001): 


  

 

2test07接受test10的请求但是不添加自己到test10的好友列表中:

C2S - RECV (25130001): 

C2S - SENT (1110016): subscription="to">Friends

告知test10test10对应test07的好友请求状态变为to

C2S - SENT (1110016): 

C2S - SENT (1110016): 在线1

C2S - SENT (25130001): subscription="from"/>

告知test07test07对应test10的好友请求状态变为from

C2S - SENT (25130001): 在线1

 

 

3test07反向添加test10为好友:

C2S - RECV (25130001): Friends

C2S - SENT (25130001): subscription="from">Friends

告知test07test07对应test10的好友请求状态为from

 

 

C2S - SENT (25130001): 

C2S - RECV (25130001):   (服务器接收到test07发送给test10presence,要求转发)

C2S - SENT (1110016): subscription="to">Friends

告知test10test10对应test07的好友请求状态为to

 

 

C2S - SENT (25130001):  subscription="from">Friends

告知test07test07对应test10的好友请求状态为from

 

 

C2S - SENT (1110016): from="[email protected]"/> (服务器发送给test10presence,响应上面要求转发的presence,触发test10发送给test07presence

C2S - RECV (1110016):   (服务器接收到test10发送给test07presence要求转发,如果当前test10离线,服务器将接收不到此presence,也就不会触发下面变为both的报文)

C2S - SENT (25130001): Friends

告知test07test07对应test10的好友请求状态为both

 

C2S - SENT (25130001): (服务器发送给test07presence,响应上面要求转发的presence

C2S - SENT (25130001): 在线1

C2S - SENT (1110016): Friends

告知test10test10对应test07的好友请求状态为both

 

C2S - SENT (1110016): 在线1

你可能感兴趣的:(【openfire添加好友流程梳理】)