openfire服务器端是不是保存聊天记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openfire服务器端是不是保存聊天记录相关的知识,希望对你有一定的参考价值。

使用XMPP协议的openfire服务器端是否会保存用户的聊天记录?还是只保存在用户的本机?

参考技术A 不保存的,openfire只保存离线的消息,例如用户不线 你发送消息后会保存,如果正常发送的消息根本没有保存,可以自己修改源码或者写插件本回答被提问者采纳 参考技术B

openfire是以log的形式存储的 如果需要数据库存储 可以安装Monitoring Service插件(登陆openfire的Console --->plugin中可以找到)之后会自动在数据库中的of默认表的目录下建立对应的表(如果没有建立 可以在Openfire\\plugins\\monitoring\\database目录下找到对应db的sql语句手动建表)。其中ofmessagearchive表里是聊天记录。里面的字段基本上跟stanza一致的

参考技术C 不小的追问

不小的,你回个屁呀。

如何让 Openfire 用户出现在聊天室中

【中文标题】如何让 Openfire 用户出现在聊天室中【英文标题】:How to get Openfire user presence in the chat room 【发布时间】:2015-12-26 20:02:08 【问题描述】:

我使用 Openfire 3.10.2 XMPP 服务器和 Strophe 库作为客户端。我想通过推送通知向聊天室中所有未加入聊天室的用户发送消息。

有插件吗?

聊天室中的用户是否保存在数据库中? 我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

你说过你会向IN聊天室中NOT JOIN聊天室的用户发送消息:这似乎是一个矛盾。如果用户没有加入房间,他就不在房间内,因此无法将房间内交换的消息也发送给该用户。

关于房间状态,您不需要插件,但您可以中继连接到 Strophe.connection 的状态处理程序。这是一个例子:

connection.addHandler(onPresence, null, "presence");

...

function onPresence(presence) 
    var msg = $(presence);
    if (msg.children('x[xmlns^="' + Strophe.NS.MUC + '"]').length > 0) 
        // muc presence
        onRoomPresence(presence);
     else 
        // user presence
        onUserPresence(presence);
    
    return true;

不过,还有一个名为 MUC 的 Strophe 插件(请参阅strophe.muc.js)

【讨论】:

以上是关于openfire服务器端是不是保存聊天记录的主要内容,如果未能解决你的问题,请参考以下文章

java应用之openfire入门篇

Openfire 服务器端订阅节点

一天时间用OpenFire打造自己的IM聊天工具

没有 openfire 的 Android 上的聊天室应用

Openfire 服务器未将聊天室保存到 ofMucRoom 表

android端怎么接收openfire服务器发送过来的消息