xmpp服务器和名册问题

时间:2012-06-04 12:48:46

标签: iphone xmpp ejabberd

我正在使用XMPP服务器处理jabber聊天应用程序。 我想让2个用户朋友,所以我必须使用mysql查询添加名册。 我在两个表格中输入。(1)ofRoster(2)ofRosterGroups。 我在两张桌子上都有条目,但它不起作用。

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

2 个答案:

答案 0 :(得分:1)

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

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

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

基本上,手动sql插入将产生所需的结果,并且,如果您只是测试某些功能,只要重新启动服务器就可以正常工作。如果你使用openfire并且除了web ui之外需要以某种方式进行组管理工作,我会考虑使用不同的服务器。据我所知,openfire并不是真正伟大的管理在它的web ui之外。 Here是许多开源xmpp服务器的列表。我建议ejabberd(如上所述)它有一个非常好的控制工具,名为ejabberdctl,有一个名为mod_ctlextra(here is the man page for it which lists commands)的可用扩展模块,可以让你做我认为你想要的事情。然后你不必担心sql并重新启动,只需使用他们应该如何的工具。

另外,在旁注中,由于用于编写它的语言的性质,ejabberd非常有效:Erlang。好东西。

希望有所帮助!

答案 1 :(得分:0)

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

要走的路是实际让用户发送相互订阅并按照rfc接受它们。 Roster Item Exchange也可能有用。