【问题标题】:Overriding Tigase OfflineMessages class覆盖 Tigase OfflineMessages 类
【发布时间】:2013-10-14 02:09:57
【问题描述】:

我正在开发一个使用 Tigase 服务器在后台提供 XMPP 通信的聊天应用程序。除此之外,我还在我的应用程序中使用 smack/asmack 作为库。

对于用户之间发送的每条消息,为了实现我想要实现的功能,我通过 smack 的 Presence.setProperty() 方法包括了包扩展,如果两个用户都在线,这些扩展是正确的。当其中一个用户离线时,Tigase 服务器会保存该消息,然后在该用户再次在线时传递该消息。问题是 Tigase 不保存包含数据包扩展名的消息,因此当用户再次在线时,它只会收到发送的消息的“部分”。

我找到了 Tigase 源代码,并在 xmpp.impl 包的 OfflineMessages 类部分中找到了该位置,我需要在其中插入一行代码,以便 msgoffline 插件使用扩展保存离线消息。

在不构建项目的整个源代码的情况下,覆盖 Tigase jar 文件中的 OfflineMessages 类的最简单方法是什么?

我在 ubuntu 服务器和 Eclipse 上使用 Tigase-5.1.5-b3164 版本作为 IDE。

【问题讨论】:

  • 你想在OfflineMessages.java中插入哪一行代码?
  • 我正在按照阿图尔所说的去做

标签: java eclipse smack asmack tigase


【解决方案1】:

我不知道 Smack 库,因此我不知道 Presence.setProperty() 方法的作用。但是,如果它对存在数据包做了某些事情(向存在状态添加额外的有效负载),那么它不会被保存到离线消息存储中,因为......存在不会存储在离线消息存储中。

如果您想修改 OfflineMessages 以使其存储比现在存储的更多不同的数据(例如特定的存在数据包),那么有一个方法:savePacketForOffLineUser,开头带有一个大的 IF。这是决定在离线存储中存储什么的地方。

但是,请注意不要存储所有存在,它会杀死您的服务和数据库。

添加您自己的插件的最佳方式是复制现有的 Tigase 插件 (OfflineMessgae),将其修改为您的偏好,更改插件名称和插件 ID。然后,您只需将带有代码的 jar 放入 Tigase jars 目录并修改配置以加载您的 plying 而不是默认的。这样您就不必重新编译 Tigase 源代码,也可以更轻松地更新到新版本。

【讨论】:

  • 谢谢,但是否可以在不编译源代码的情况下快速启动和构建 Tigase 插件?关于这方面的一些提示?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-16
  • 2021-01-17
  • 2012-12-17
  • 2021-08-24
  • 2015-05-02
相关资源
最近更新 更多