我正在开发一个xmpp客户端应用程序。我需要将ping iq数据包发送到xmpp服务器以确保服务器仍处于活动状态。我如何通过jabber-net库发送它? 感谢
答案 0 :(得分: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
发送请求并获得响应通知。