Я новичок в XMPP, поэтому простите меня, если этот вопрос звучит глупо. Я хочу создать собственный плагин и сопоставить его с моим клиентом aSmack на Android. Я пытаюсь применить свои знания о веб-сервисах, но я не выигрываю. Поэтому, пожалуйста, направляйте мое мышление на лучший подход, пример будет действительно полезен. Thanx заранее.
Картирование Openfire Пользовательский плагин с клиентом aSmack
Ответ 1
Существует много типов плагинов, позволяющих говорить в целом. Руководство по плагину Igniterealtime
Вы хотите определить новый IQ Stanza для управления UserCustomParam. Пусть говорят:
<iq from="[email protected]" to="myserver" type="get">
<usercustomparam xmls:"com.records.iq" retrive="favouritecolor">
</iq>
Что вам нужно:
шаг 1: определить плагин (класс, который реализует плагин) который добавляет новый обработчик
MyCustomHandler colorshandler;
IQRouter iqRouter = XMPPServer.getInstance().getIQRouter();
iqRouter.addHandler(colorshandler);
Шаг 2: реализует MyCustomHandler по мере необходимости (читайте в базе данных, записывайте в базу данных, читайте серверную часть и т.д.).
public class MyCustomHandler extends IQHandler {
public static final String NAMESPACE_TICKET_IQ = "com.records.iq";
public static final String TAG_TICKET_IQ = "usercustomparam ";
Теперь ваш сервер готов управлять вашим пользовательским запросом IQ.
Время на стороне клиента:
Шаг 3: зарегистрируйтесь в ProviderManager IQProvider
ProviderManager.addIQProvider("usercustomparam ","com.records.iq", new IQUserCustomParamProvider());
Шаг 4: реализует ваш IQUserCustomParamProvider, как вам нужно
public class IQUserCustomParamProvider extends IQProvider<IQUserCustomParam>
в Провайдер вы будете анализировать входящий IQ с сервера, и вы создадите IQUserCustomParam с параметром экземпляра, например
String favouriteColor
Шаг 5: вам нужно реализовать IQUserCustomParam
public class IQUserCustomParam extends IQ
private final static String childElementName = "usercustomparam";
private final static String childElementNamespace = "com.records.iq";
public IQUserCustomParam (String color)
{
this(childElementName , childElementNamespace );
this.setType(IQ.Type.result);
this.setFavouriteColor(color);
}
Шаг 6: теперь настройте его, но вы еще не определили, когда принимать IQUserCustomParam, когда он поступает с сервера. Итак, вам нужен StanzaFilter
public class IQUserCustomParamFilter implements StanzaFilter
Шаг 7: и вы еще не определили, что делать с IQUserCustomParam, когда он приходит с сервера. Итак, вам нужен StanzaListner
public class IQUserCustomParamListner implements StanzaListener
Шаг 8: Наконец, вам нужно будет зарегистрировать комбинированный фильтр/список в вашем соединении:
AbstractXMPPConnection connection = ...;
connection.addAsyncStanzaListener(new PersonalConfigListner(this), new IQMUCConfigTicketFIlter();
Если это помогло, пожалуйста, не забудьте принять ответ!