使用 Jabber 发送网络消息

Posted

技术标签:

【中文标题】使用 Jabber 发送网络消息【英文标题】:Using Jabber to send network messages 【发布时间】:2009-06-04 12:52:08 【问题描述】:

(在 ServerFault 上也询问过,我也被建议在这里发布)

当其他用户在线提交报告内容时,我们需要通过网络向各种用户(合规、生产)发送桌面警报。

目前我们正在使用 NET SEND,但这并不能保证交付,并且从客户端和服务器的角度来看都证明是不可靠的(我猜在更高版本的 Windows 中将不支持;我们目前正在运行 XP)。

我们正在考虑基于 Jabber 的解决方案,但是否有人使用 Jabber 客户端像 NET SEND 那样在屏幕上弹出警报消息,而不是仅仅将聊天窗口置于最前面或显示临时“祝酒”消息靠近系统托盘。

我们需要警报消息是持久的,并且只被用户关闭,表明他们已经看到它。 Toast 风格的弹出窗口会很好,只要它不仅在有限的时间内并且必须再次被用户关闭。

有什么解决办法吗?

【问题讨论】:

【参考方案1】:

Openfire 是一个基于 java 的 Jabber 服务器,似乎面向企业/商业环境,并通过其 Spark 客户端提供“toast”消息功能。它们还提供其他几个有用的以业务为中心的功能。

【讨论】:

我用过 openfire,它很好,如果有用和需要的话,几乎可以用任何语言为它构建自定义客户端。【参考方案2】:

XMPP 规范不保证离线消息传递。这取决于具体的服务器实现。此外,它在支持用户帐户方面也有成本。 作为一个开箱即用的解决方案,它很好,但由于我们在开发社区,我会 考虑使用MessageQueue 构建警报系统以保证交付。

【讨论】:

【参考方案3】:

XMPP 的消息传递语义很可能非常适合您的应用程序,因为您不是在谈论需要信托级别传递保证的金融交易。它肯定会比 NET SEND 好很多。

编写一个简单的客户端来侦听消息并以您想要的任何格式弹出窗口,并让程序在后台运行,可能带有托盘图标。例如,使用Jabber-Net 编写类似的内容需要几个小时。

【讨论】:

以上是关于使用 Jabber 发送网络消息的主要内容,如果未能解决你的问题,请参考以下文章

需要开发一个 PHP - 基于 Jabber 的聊天工具

如何使用 xmpppy 向 jabber 客户端发送消息?

向 XMPP/Jabber 会议室发送消息的简单方法? (Shell 或 Python,Debian wheezy)

当两个 Jabber (XMPP) 客户端连接时,只有一个能够接收消息,两个都可以发送

如何使用 jabber-net 获取消息历史记录(消息归档)

xmpp(jabber) 协议中发送者的标识