我会尝试解释我想要先实现的目标。
想象一下,两个用户正在使用Windows窗体应用程序,当用户A打开特定窗体时,会将锁应用于窗体下面的数据记录,以便只有该用户可以在此时进行更改。
用户B列出了所有记录(在网格中),其中包含对用户A已经打开的记录的引用。我们要做的是当用户A打开记录时用户B的记录列表被更新在行旁边显示一个锁定图标,表示该记录正在使用中。
这是我们如何处理消息传递的一个简单示例,但您明白了,用户A做了用户B需要知道的事情。
我已经使用Jabber-net为C#和OpenFire Jabber Server实现了一个系统。基本上,当要发送消息时,新行将插入数据库中的消息表。服务客户端使用SqlDependancy对象监视消息表,以便在新消息准备好时,服务构建相关消息并通过Jabber和OpenFire服务器将其发送到所需的客户端。
这样可行,但OpenFire的开箱即用功能是支持即时消息,这显然不是我想要实现的。我遇到的问题是,如果用户登录到两个应用程序上下文(即测试和实时),OpenFire不知道向哪个发送消息,因为user @ server / resource的JID结构不会注意到该资源。
基本上我目前使用OpenFire和Jabber-net的方式并不完全正确。
是否有一种模式可用于实现我想要实现的目标,即向客户端发送消息告诉它做某事,同时能够指定您发送消息的客户端。 XMPP似乎就是答案,因为我可以构建自己的消息类型来进行解析。
我的应用程序是Windows Forms,.NET 3.5 C#应用程序。
答案 0 :(得分:0)
我只是添加一些数据来指示哪些应用程序上下文受到影响,让其他客户端决定是否需要处理该消息。