首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖Tigase OfflineMessages类

覆盖Tigase OfflineMessages类
EN

Stack Overflow用户
提问于 2013-10-14 02:09:57
回答 1查看 504关注 0票数 0

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

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

我找到了Tigase源代码,并在xmpp.impl包的xmpp.impl类中找到了位置,在这里我需要插入一行代码,以便msgoffline插件可以使用扩展保存脱机消息。

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-14 18:53:56

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

如果您希望修改OfflineMessages,使其存储比现在存储的更多不同的数据(比如特定的存在包),那么就有一种方法: savePacketForOffLineUser,在开头有一个大的If。这是决定要在脱机存储中存储什么的地方。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19352536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档