# MyXmpp **Repository Path**: android100/MyXmpp ## Basic Information - **Project Name**: MyXmpp - **Description**: init - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-06-25 - **Last Updated**: 2021-06-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 参考: [ igniterealtime / Smack 文档](https://github.com/igniterealtime/Smack/wiki/Smack-4.4-Readme-and-Upgrade-Guide) [Smack Extensions User Manual](http://download.igniterealtime.org/smack/docs/latest/documentation/extensions/index.html) [Smack 类 文档 ](https://download.igniterealtime.org/smack/docs/latest/javadoc/allclasses.html) [ github : SmackChat ](https://github.com/azhon/SmackChat) [Smack类库最好的学习资料](https://www.jianshu.com/p/97c257b931f3) [ openfire smack包聊天室 ](https://my.oschina.net/plumdo/blog/386614) [ openfire smack监听器 ](https://my.oschina.net/plumdo/blog/386603) [ 8.Smack类库 ](https://www.cnblogs.com/sixrain/p/5258381.html) # JID : DomainBareJid / DomainFullJid / EntityBareJid / EntityFullJid ```java //房间 String roomJidString = roomName + "@conference." + xmppDomain; //111111@conference.192.168.0.134 //房间内用户 String userInRoomJidString = roomName + "@conference." + xmppDomain + "/" + account; //111111@conference.192.168.0.134/xq234 //服务器用户 String userJidString = account + "@" + xmppDomain + "/" + resource; //xq234@192.168.0.134/android String jidString = userInRoomJidString; // `@`[结果]`/` DomainBareJid domainBareJid = JidCreate.domainBareFrom(jidString); Log.e(TAG, "getConnection: domainBareJid == " + domainBareJid); //conference.192.168.0.134 //192.168.0.134 // `@`[结果] DomainFullJid domainFullJid = JidCreate.domainFullFrom(jidString); Log.e(TAG, "getConnection: domainFullJid == " + domainFullJid); //conference.192.168.0.134/xq234 //192.168.0.134/android // [结果]`/` EntityBareJid entityBareJid = JidCreate.entityBareFrom(jidString); Log.e(TAG, "getConnection: entityBareJid == " + entityBareJid); //111111@conference.192.168.0.134 //xq234@192.168.0.134 // 全地址 EntityFullJid entityFullJid = JidCreate.entityFullFrom(jidString); Log.e(TAG, "getConnection: entityFullJid == " + entityFullJid); //111111@conference.192.168.0.134/xq234 //xq234@192.168.0.134/android ``` # muc 房间配置 | 字段 | 类型 | 标签 | |--|--|--| | muc#roomconfig_roomname | text-single | 房间名称| | muc#roomconfig_roomdesc | text-single | 房间描述| | muc#roomconfig_changesubject | boolean | 允许成员更改主题| | muc#roomconfig_maxusers | list-single | 最大房间成员人数| | muc#roomconfig_presencebroadcast | list-multi | 广播其存在的角色| | muc#roomconfig_publicroom | boolean | 在目录中列出房间| | muc#roomconfig_persistentroom | boolean | 永久房间| | muc#roomconfig_moderatedroom | boolean | 房间需要审核| | muc#roomconfig_membersonly | boolean | 房间仅对成员开放| | muc#roomconfig_allowinvites | boolean | 允许成员邀请其他人| | muc#roomconfig_passwordprotectedroom | boolean | 需要密码才能进入房间| | muc#roomconfig_roomsecret | text-private| 密码| | muc#roomconfig_whois | list-single | 能够发现成员真实 JID 的角色| | muc#roomconfig_allowpm | list-single | Allowed to Send Private Messages| | muc#roomconfig_enablelogging | boolean | 记录房间聊天| | x-muc#roomconfig_reservednick | boolean | 仅允许注册昵称登录| | x-muc#roomconfig_canchangenick | boolean | 允许成员修改昵称| | x-muc#roomconfig_registration | boolean | 允许用户注册房间| | muc#roomconfig_roomadmins | jid-multi | 房间管理员| | muc#roomconfig_roomowners | jid-multi | 房间拥有者| # 聊天室中角色,关系 ### 角色(MUCRole): - `moderator`: 主持人 (可以进行踢人,禁止发言等授权) - `participant`:参与者 (可以发言) - `visitor`:访客(不能发言) - `none`:无 ### 关系(MUCAffiliation): - `owner`:拥有者 - `admin`:管理员 - `member`:会员 - `outcast`:被禁止加入的 - `none`:无 在smcak里面的授权:(角色会随着关系变化,反之不会) - 授予拥有者,管理员,会员,发言,主持人 - 被授予拥有,管理的时候,角色自动变成:主持人 - 被授予会员的时候,角色变成:参与者 - 被授予主持人,关系不会变化 - 被禁止发言:角色变成访客 注意: - changeNickname : 用户在群内昵称 - changeSubject : 房间主题,需要【拥有者、管理员、成员及被排除者】中的(管理员)权限以上 - 房间配置,需要【拥有者、管理员、成员及被排除者】中的(拥有者)权限 > 房间内拥有者、管理员、成员及被排除者中 , 只有【拥有者】才能获取/修改房间配置, > 拥有者修改了房间名称/描述/主题,群友只能收到修改【主题】的通知。