openfire插件開發之IQHander
阿新 • • 發佈:2018-09-03
static add ger 組管理 什麽 lin 不同 刪除 online
註意事項
我們如果要做自己的IQ包處理,可以自定義類如TestTemplateMethodHandler:class TestTemplateMethodHandler extends IQHandler。
以下需要註意:
-
IQ handlers相應包中特定的元素名或命名空間,在public IQHandlerInfo getInfo()方法中寫上自己想要註冊的元素名及命名空間。如:
private IQHandlerInfo info;
private String HISTORY_XMLNS = "http://weaver.com.cn/history" ;
?
public HistoryIQHandle() {
super("HistoryIQHandle");
info = new IQHandlerInfo("query", HISTORY_XMLNS);
}
@Override
public IQHandlerInfo getInfo() {
return info;
}
-
在public IQ handlerIQ(IQ packet)方法中寫上自己想要對丟進來的IQ包做什麽樣的處理(註意IQ包是基於問答形式的,所以應該有IQ包的reply)。
-
繼承IQHandler的插件,需要註冊到IQRouter中去。
實現過程
-
創建一個類,繼承IQHandler類,下面是一個IQHander框架
public class TestIQHander extends IQHandler {
?
private static final Logger Log = LoggerFactory.getLogger(TestIQHander.class);
private IQHandlerInfo info;
//這裏實現不同的iq接口
private String ISONLINE_XMLNS = "http://weaver.com.cn/isOnline";
?
public TestIQHander(String moduleName) {
super("TestIQHander");
info = new IQHandlerInfo("query", ISONLINE_XMLNS);
}
?
@Override
//這裏實現自己的邏輯
public IQ handleIQ(IQ packet) throws UnauthorizedException {
return null;
}
?
//這裏必須返回info
@Override
public IQHandlerInfo getInfo() {
return info;
}
} -
註冊繼承IQHander的到IQrouter中,可以在其他插件初始化時註冊.
IQRouter iqRouter = XMPPServer.getInstance().getIQRouter();
TestIQHander test = new TestIQHander();
iqRouter.addHandler(test);
iq接口類型
前臺請求的iqiq接口有如下類型:
1. 簡要描述:
-
創建群組接口
請求xmlns:
-
http://weaver.com.cn/group
2. 簡要描述:
-
將成員列表中成員添加到群組中
請求xmlns:
-
http://weaver.com.cn/group
3. 簡要描述:
-
刪除群成員接口
請求xmlns:
-
http://weaver.com.cn/group
4. 簡要描述:
-
修改群組名稱接口
請求xmlns:
-
http://weaver.com.cn/group
5. 簡要描述:
-
用戶退出群組接口
請求xmlns:
-
http://weaver.com.cn/group
簡要描述:
-
設置群組icon圖標接口
6. 請求xmlns:
-
http://weaver.com.cn/group
7. 簡要描述:
-
轉讓群主接口
請求xmlns:
-
http://weaver.com.cn/group
8. 簡要描述:
-
設置群組管理員接口
請求xmlns:
openfire插件開發之IQHander