0

我正在使用 XMPP 服务器开发 jabber 聊天应用程序。我想交 2 个用户朋友,所以我必须使用 mysql 查询添加名册。我已经在两个表中输入。(1) ofRoster (2)ofRosterGroups。我在两个表中都输入了条目,但它不起作用。

有什么我想念的地方吗?我可以使用管理面板执行此操作,但我不想这样做。

4

2 回答 2

1

我认为您正在使用 openfire(SQL 中的那些表看起来像 openfire 设置)。如果是这样,您必须编辑的表是“ofGroupUser”。要将用户添加到组中,您需要在该表中执行 sql 插入,其中组名是您要将用户添加到的组,用户名是您要添加到组中的用户,管理员是该组的标志用户的权限(只使用 0)。插入示例如下所示:

INSERT INTO ofGroupUser VALUES("组名", "用户", 管理员);

但是,正如上面帖子中提到的,这不是一个好的方法,因为它不会立即影响服务器。您必须重新启动服务器才能进行这些更改,因为 openfire(或您使用的任何服务器)可能只在启动时读取数据库。一旦缓存了所有内容,它将根据请求编辑数据库(例如通过管理控制台添加用户或组),但不会从中读取,并且在服务器重新启动之前不会看到您的添加。

基本上,进行手动 sql 插入将产生所需的结果,并且,如果您只是测试某些功能,只要重新启动服务器就可以正常工作。如果您使用的是 openfire 并且需要以除 web ui 之外的某种方式进行组管理工作,我会考虑使用不同的服务器。据我所知,openfire 在 web ui 之外的管理方面并不是很好。 是许多开源 xmpp 服务器的列表。我推荐ejabberd(如上所述)它有一个非常好的控制工具,叫做ejabberdctl,有一个可用的扩展模块叫做mod_ctlextra(这里是它的手册页,它列出了命令) 这将允许你做我认为你想要的。然后您不必担心 sql 和重新启动,只需使用他们的工具就可以了。

此外,在旁注中,ejabberd 非常高效,因为用于编写它的语言的性质: Erlang。好东西。

希望有帮助!

于 2012-06-06T19:48:36.020 回答
0

大概您正在使用带有 ejabberd 的 odbc 模块。sql 模式虽然定义了两个表rostergroupsrosterusers而不是您在问题中提到的表。在任何情况下,您都不应该直接更新表,ejabberd 会保持内部状态并且不会收到您的更改通知。

要走的路是让用户根据rfc发送相互订阅并接受它们。名册项目交换也可能有用。

于 2012-06-06T17:13:23.940 回答