本文整理汇总了C#中ASC.Xmpp.Core.protocol.client.IQ.GetTag方法的典型用法代码示例。如果您正苦于以下问题:C# IQ.GetTag方法的具体用法?C# IQ.GetTag怎么用?C# IQ.GetTag使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ASC.Xmpp.Core.protocol.client.IQ
的用法示例。
在下文中一共展示了IQ.GetTag方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: HandleIQ
public override IQ HandleIQ(XmppStream stream, IQ iq, XmppHandlerContext context)
{
var answer = new IQ(IqType.result)
{
Id = iq.Id,
To = iq.From,
From = iq.To,
};
//iq sended to server
if (iq.Type == IqType.get && (!iq.HasTo || iq.To.IsServer || iq.To == iq.From))
{
if (iq.GetTag(typeof(Version)) != null)
{
answer.Query = new Version()
{
Name = "OnlyOffice Jabber Server",
Os = System.Environment.OSVersion.ToString(),
Ver = "1.0",
};
return answer;
}
else if (iq.GetTag(typeof(Ping)) != null)
{
return answer;
}
return XmppStanzaError.ToServiceUnavailable(iq);
}
if (iq.Type == IqType.get && iq.HasTo)
{
//resend iq
var sessionTo = context.SessionManager.GetSession(iq.To);
var sessionFrom = context.SessionManager.GetSession(iq.From);
if (sessionTo != null && sessionFrom != null)
{
if (string.IsNullOrEmpty(iq.Id))
{
iq.Id = System.Guid.NewGuid().ToString("N");
}
IdleWatcher.StartWatch(
iq.Id + iq.From,
System.TimeSpan.FromSeconds(3),
(s, e) => { context.Sender.SendTo(sessionFrom, XmppStanzaError.ToServiceUnavailable(iq)); });
context.Sender.SendTo(sessionTo, iq);
}
else
{
return XmppStanzaError.ToRecipientUnavailable(iq);
}
}
if (iq.Type == IqType.error || iq.Type == IqType.result)
{
if (!iq.HasTo)
{
return XmppStanzaError.ToBadRequest(iq);
}
IdleWatcher.StopWatch(iq.Id + iq.To);
var session = context.SessionManager.GetSession(iq.To);
if (session != null)
{
context.Sender.SendTo(session, iq);
}
}
return null;
}