PaulFreund/xmpp 接收标签订单
Posted
技术标签:
【中文标题】PaulFreund/xmpp 接收标签订单【英文标题】:PaulFreund/xmpp receiving tags order 【发布时间】:2013-11-03 13:43:30 【问题描述】:我正在使用 PaulFreunds XMPP 库编写 Windows 8 聊天程序 - PaulFreund/XMPP
我有两个问题: 首先 - 我需要手动绑定我的资源。我不知道在代码中放置边界资源标签的位置。它需要在客户端连接时发送,但我无法到达那个地方。连接客户端后,发送标签会导致我出错。标签:
public void bindResource()
var iq = new XMPP.tags.jabber.client.iq();
iq.type = XMPP.tags.jabber.client.iq.typeEnum.set;
var bind = new XMPP.tags.xmpp_bind.bind();
var resource = new XMPP.tags.xmpp_bind.resource();
resource.Add("myresource");
bind.Add(resource);
iq.Add(bind);
Client.Send(iq);
第二个订单也很棘手。我想通过我的请求获取我的朋友列表:
public void getFriends()
var iq = new XMPP.tags.jabber.iq.roster.query();
var tag = new XMPP.tags.jabber.client.iq();
tag.type = XMPP.tags.jabber.client.iq.typeEnum.get;
tag.Add(iq);
Client.Send(tag);
它工作正常。但是在这里我也想在我从服务器获得有关状态的存在后处理它。 (我们称它为服务器,因为我们都从我们列表中的每个朋友那里知道它)这是因为我在我的联系人列表中设置在线值。我可以像现在这样按顺序执行:第一个状态第二个朋友列表,但我需要制作一些我不想制作的缓存文件。我试图将它放在OnConnected
事件中,但来自朋友的存在也早于该列表。
【问题讨论】:
【参考方案1】:该库实现了一个状态机,并且在您开始连接后,一旦它到达 BindingState,应该会自动向服务器发送绑定请求,请参阅States。当资源绑定成功时,您将通过 OnReceive 事件收到结果。
关于您的第二个问题,尽管在技术上可能是可能的,但它不是有意的。 XMPP 存在在发布者订阅者模型上工作,模拟订阅者的客户端无法控制发布者何时发送新信息。即使服务器在连接时不会发布您的联系人的当前状态集,联系人也可能在那个时刻连接并且客户端会收到状态通知。 名册管理是一项可选功能,不能替代您从状态中收集的信息(例如,名册不会告诉您联系人的状态)。
为了提供有关用户联系人的所有信息,您需要创建一个数据结构来同时保存额外的花名册信息和联系人的状态。
作为参考,您可以查看我对 Windows 8 messenger Chat 的实现,尽管它并不完美,但应该让您了解如何管理 XMPP 连接
【讨论】:
以上是关于PaulFreund/xmpp 接收标签订单的主要内容,如果未能解决你的问题,请参考以下文章
JavaWeb SpringBoot SSM 婚纱影楼摄影预约网站(源码+sql可直接运行完整版《精品毕设》)主要功能实现:登录,订单,摄影师,级别,标签,摄影地点,客片,轮播图等管理