我会尝试解释我想要先实现的目标。

想象一下,两个用户正在使用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#应用程序。

有帮助吗?

解决方案

我只是添加一些数据来指示哪些应用程序上下文受到影响,让其他客户端决定是否需要处理该消息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top