您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > IM结构流程及通讯接口
李桂生第 1 页共 10 页本源码下载地址:结构流程一、用户上线流程图如下:李桂生第 2 页共 10 页 5:登录IM Server 10:强制其他实例下线 14:向在线好友发送上线通知 14:向在线好友发送上线通知 14:向在线好友发送上线通知 1. 用户启动 IM 客户端,输入用户 ID 和密码,单击“登录”按钮;IM 客户端启动从根据配置信息中的 AppServer 的 IP 地址和端口,建立 TCP 连接到 AppServer;发送用户 ID 和密码、以及上次获取好友列表时间的登录请求;格式如下: 0x1001:Client_APP_Online:IM 客户端登录 App Server;字段名长度类型备注UserID4DWORD用户IDPassword16BYTE[16]用户密码dbFriendsUpdateTime8DOUBLE上次获取好友列表时间dwVersion4DWORD客户端版本号 2. AppServer 连接到 DB Server,向 DB Server 发送用户登录命令,并取用户的好友、分组等信息;格式如下:李桂生第 3 页共 10 页 0x9001:APP_DBSrv_Online:App校验用户密码,并取用户好友、分组信息等;字段名长度类型备注UserID4DWORD用户IDPassword16BYTE[16]用户密码dbFriendsUpdateTime8DOUBLE上次获取好友列表时间 3. DB Server 将验证结果错误或所有好友列表、分组信息等返回给 App Server;格式如下: 0xA001:DBSrv_APP_USER_Info:DB Server 返回用户的分组、好友信息或错误信息给 App Server;字段名长度类型备注GroupCount2WORD组数目FriendsCount4DWORD好友数目(返回全部好友)错误代码: 0x00 验证成功,用户 ID 与密码匹配 0x01 用户密码错误 0x02 用户 ID 被禁用 0x03 用户 ID 不存在分组信息:字段名长度类型备注wGroupID2WORD组IDGroupName20BYTE组名nOrder1BYTE先后顺序好友信息字段名长度类型备注dwUserID4DWORD用户IDNickname50BYTE昵称bOnline1BYTE在线状态wGroupID2WORD组ID,所属那个组在线状态: 0x00 不在线、离线 0x01 在线 0x02 隐身 0x03 忙碌 0x04 离开 0x05 打电话 0x06 外出就餐 0x07 马上回来 0x08 显示为脱机李桂生第 4 页共 10 页 4. App Server 将 DB Server 返回的错误信息、分配的 IM 地址、所有好友列表、在线好友列表、分组信息等返反馈给 IM 客户端;格式如下: 0x5012:APP_MCU_query_onlineuser_resp:批查询在线好友应答字段名长度类型备注IMCount1BYTEIMServer数目GroupCount2WORD组数目FriendsCount4DWORD好友数目(返回全部好友)错误代码: 0x00 验证成功,用户 ID 与密码匹配 0x01 用户密码错误 0x02 用户 ID 被禁用 0x03 用户 ID 不存在 IM 地址信息:字段名长度类型备注dwIMip4DWORDIM的IP地址wPort2WORDIM的端口分组信息:字段名长度类型备注wGroupID2WORD组IDGroupName20BYTE组名nOrder1BYTE先后顺序好友信息字段名长度类型备注dwUserID4DWORD用户IDNickname50BYTE昵称bOnline1BYTE在线状态wGroupID2WORD组ID,所属那个组在线状态: 0x00 不在线、离线 0x01 在线 0x02 隐身 0x03 忙碌 0x04 离开 0x05 打电话 0x06 外出就餐 0x07 马上回来 0x08 显示为脱机李桂生第 5 页共 10 页 5. IM 客户端连接 App Server 分配的 IM Server,并发送登录请求;格式如下: 0x2001:Client_MCUx_login_IM:登录 IM Server;字段名长度类型备注UserID4DWORD用户IDPassword16BYTE[16]用户密码 6. IM Server 连接到 App Server 进行验证密码;格式如下: 0x3001:MCU_App_Client_login:客户端登录字段名长度类型备注UserID4DWORD用户IDPassword16BYTE[16]用户密码dwIMSvrIP4DWORDIMServerIP地址wIMSvrPort2WORDIMServer端口号dwIMUserIP4DWORDIMClientIP地址wIMUserPort2WORDIMClient端口号 7. App Server 将验证的结果反馈给 IM Server;格式如下: 0x5020:App_MCU_Login_result:App Server 告知 MCU登录是否有效;字段名长度类型备注UserID4DWORD用户IDPassword16BYTE[16]用户密码dwIMUserIP4DWORDIMClientIP地址wIMUserPort2WORDIMClient端口号bResult1BYTE验证结果验证结果:0x00通过身份认证0x01认证失败 8. IM Server 向 App Server 发送上线通知;格式如下:李桂生第 6 页共 10 页 0x6001:MCU_App_Client_online:MCU向 App Server 发送上线通知;字段名长度类型备注UserID4DWORD用户IDbOnline1BYTE在线状态dwIMSvrIP4DWORDIMServerIP地址wIMSvrPort2WORDIMServer端口号dwIMUserIP4DWORDIMClientIP地址wIMUserPort2WORDIMClient端口号 9. App Server 将查找,当前用户 ID 之前的登录实例;向该实例的 IM Server 发送强制该实例下线的命令;格式如下: 0x5030:App_MCU_Kick_client:App Server 向 MCU 发送命令,强制用户下线;字段名长度类型备注UserID4DWORD用户IDdwIMUserIP4DWORDIMClientIP地址wIMUserPort2WORDIMClient端口号FriendsCount4DWORD在线好友数目在线好友信息列表:字段名长度类型备注UserID4DWORD用户IDdwIMUserIP4DWORDIMClientIP地址wIMUserPort2WORDIMClient端口号 10. IM Server 向指定的 IM 客户端发送下线的命令,强制该 IM 实例下线;格式如下: 0x4030:MCU_Client_Kick_user:强制用户下线;字段名长度类型备注UserID4DWORD用户ID 11. App Server 向该用户的在线好友的 IM Server 发送该用户下线通知;格式如下: 0x5008:APP_MCUx_buddy_offline:通知好友的 MCU,用户下线;字段名长度类型备注UserID4DWORD用户ID李桂生第 7 页共 10 页bOnline1BYTE在线状态dwIMSvrIP4DWORDIMServerIP地址wIMSvrPort2WORDIMServer端口号dwIMUserIP4DWORDIMClientIP地址wIMUserPort2WORDIMClient端口号FriendsCount4DWORD在线好友数目在线好友信息列表:字段名长度类型备注UserID4DWORD用户IDdwIMUserIP4DWORDIMClientIP地址wIMUserPort2WORDIMClient端口号 12. IM Server 向在线好友的 IM 客户端发送该用户下线通知;格式如下: 0x3006:MCUx_Clientx_Buddy_offline:通知好友用户下线;字段名长度类型备注dwUserID4DWORD用户IDNickname50BYTE昵称 13. App Server 向该用户在线好友的 IM Server 发送该用户上线通知;格式如下: 0x5006:App_MCUx_Client_online:通知好友的 MCU,用户上线;字段名长度类型备注UserID4DWORD用户IDbOnline1BYTE在线状态dwIMSvrIP4DWORDIMServerIP地址wIMSvrPort2WORDIMServer端口号dwIMUserIP4DWORDIMClientIP地址wIMUserPort2WORDIMClient端口号FriendsCount4DWORD在线好友数目在线好友信息列表:字段名长度类型备注UserID4DWORD用户IDdwIMUserIP4DWORDIMClientIP地址李桂生第 8 页共 10 页wIMUserPort2WORDIMClient端口号 14. IM Server 向在线好友的 IM 客户端发送上线通知;格式如下: 0x3004:MCUx_Clientx_buddy_online:向好友发送用户上线通知:字段名长度类型备注dwUserID4DWORD用户IDNickname50BYTE昵称 15. App Server 向 IM 客户端发送系统信息、广告等消息;格式如下: 0xB001:App_Client_MSGAD:向用户发送系统消息或广告:字段名长度类型备注dwUserID4DWORD用户IDdwIMUserIP4DWORDIMClientIP地址wIMUserPort2WORDIMClient端口号消息格式:字段名长度类型备注dwMsgID4DWORD消息ID,唯一wMsgType2WORD消息类型dwFrom4DWORD来自哪个用户dwIMUserIP4DWORDIMClientIP地址wIMUserPort2WORDIMClient端口号Content256BYTE消息内容RespCode2WORD回复代码消息类型: 0x00 文本消息 0x01 广告连接等回复代码: 0x0000 拒绝成为好友 0x0001 接受成为好友李桂生第 9 页共 10 页二、用户下线用户的下线分为用户主动下线和被动下线两种情况:主动下线是指用户在退出 IM 客户端或更改 IM 客户端用户而主动断开与 IM Server 的连接;被动下线是指由于网络不稳定等情况导致 IM 客户端失去与 IM Server 的连接;现在只描述用户的主动下线;其流程图如下: 1:发送下线命令 3:发送好友下线通知 2:向AppServer发送下线命令 4:发送好友下线通知 4:发送好友下线通知 4:发送好友下线通知 4:发送好友下线通知 4:发送好友下线通知 4:发送好友下线通知 1. IM 客户端响应菜单命令,向 IM Server 发送下线命令; 2. IM Server 将用户下线的命令发送往 App Server; 3. App Server 接收到来自 IM Server 的命令后,先将该用户下线的命令发送到所有的 IM Server,然后从在线用户记录表中删除该用户的在线记录; 4. IM Server 将用户的下线命令发往其各个在线好友;李桂生第 10 页共 10 页三、添加好友四、转发命令
本文标题:IM结构流程及通讯接口
链接地址:https://www.777doc.com/doc-636972 .html