Я разрабатываю клиентское приложение xmpp. Мне нужно отправить пакеты ping iq на сервер xmpp, чтобы убедиться, что сервер все еще жив. Как я могу отправить его через библиотеку jabber-net? Благодарность
Как отправлять ping-пакеты с помощью библиотеки jabber-net
comment
stackoverflow.com/questions/39918099/
- person Ricardo Henrique   schedule 07.10.2016
Ответы (1)
Прочтите FAQ_Packets и XEP-0199. Установите NS в urn:xmpp:ping
. Что-то вроде:
namespace your.protocol
{
public class PingQuery : Element
{
public const string PING_NS = "urn:xmpp:ping";
// used when creating elements to send
public PingQuery(XmlDocument doc) : base("ping", PING_NS, doc)
{}
// used to create elements for inbound protocol
public PingQuery(string prefix, XmlQualifiedName qname, XmlDocument doc)
: base(prefix, qname, doc)
{}
}
public class Factory : jabber.protocol.IPacketTypes
{
private static QnameType[] s_qnt = new QnameType[]
{
new QnameType("ping", PingQuery.PING_NS, typeof(your.protocol.PingQuery))
};
QnameType[] IPacketTypes.Types { get { return s_qnt; } }
}
}
Затем используйте что-то вроде:
private void jabberClient_OnStreamInit(object sender, ElementStream stream)
{
stream.AddFactory(new your.protocol.Factory());
}
зацепить вашу фабрику. Затем используйте IQTracker
как обычно, чтобы отправить запрос и получить уведомление об ответе.
person
Joe Hildebrand
schedule
27.05.2014