我正在后台使用Tigase服务器开发聊天应用程序,以提供XMPP通信。除此之外,我在我的应用程序中使用smack / asmack作为库。
在用户之间发送每条消息时,为了实现我想实现的功能,我通过smack的Presence.setProperty()方法包括包扩展,如果两者都正确发送用户在线。当其中一个用户离线时,Tigase服务器会保存该消息,然后在用户再次联机时将其传送出去。问题是Tigase不会保存包括数据包扩展在内的消息,所以当用户再次在线时,它只会收到"部分"发送消息。
我找到了Tigase源代码,并在xmpp.impl包的OfflineMessages类部分找到了这个位置,我需要插入一行代码,以便msgoffline插件使用扩展来保存离线消息。
在Tigase jar文件中覆盖OfflineMessages类的最简单方法是什么,而不构建项目的完整源代码?
我在ubuntu服务器上使用Tigase-5.1.5-b3164版本,在IDE上使用IDE。
答案 0 :(得分:0)
我不知道Smack库,因此我不知道Presence.setProperty()方法的作用。但是,如果它对状态数据包执行某些操作(向状态添加额外的有效负载),则不会将其保存到脱机消息存储中,因为......状态不会存储在脱机消息存储中。
如果要修改OfflineMessages以使其存储的数据与现在存储的数据不同(如特定的存在数据包),则有一种方法:savePacketForOffLineUser,开头有一个大的IF。这是决定在离线存储中存储什么的地方。
但是,请注意不要存储所有在线状态,它会终止您的服务和数据库。
添加自己的插件的最佳方法是制作现有Tigase插件(OfflineMessgae)的副本,根据您的偏好修改它,更改插件的名称和插件的ID。然后你只需将带有代码的jar放入Tigase jars目录并修改配置以加载你的plying而不是默认值。这样您就不必重新编译Tigase源代码,也可以更轻松地更新到新版本。