2012-06-04 57 views
0

我正在使用XMPP服務器進行jabber聊天應用程序。 我想讓2個用戶的朋友,所以我必須添加使用mysql查詢名單。 (1)ofRoster(2)ofRosterGroups。 我在表格中輸入,但不能正常工作。xmpp服務器和名單問題

有什麼地方我失蹤了。 我可以用管理面板做到這一點,但我不想那樣做。

回答

1

我想你使用的是openfire(SQL中的那些表看起來像openfire設置)。如果是這樣,你必須編輯的表是「ofGroupUser」。要將用戶添加到組中,您需要執行一個sql插入到該表中,其中組名是您想要添加該用戶的組,該用戶名是您添加到該組的用戶,管理員是該標誌的那個用戶權限(只使用0)。插入示例如下所示:

INSERT INTO ofGroupUser VALUES(「group name」,「user」,administrator);

但是,正如上面提到的那樣,這不是一個好的方法,因爲它不會立即影響服務器。您必須重新啓動服務器才能進行這些更改,因爲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。好東西。

希望有幫助!

+0

是的。我正在使用openfire。謝謝你的幫助。 – Tarun

0

推測你使用的是odbc模塊和ejabberd。儘管sql模式定義了兩個表rostergroupsrosterusers,而不是你在問題中提到的那些。在任何情況下,您應該而不是直接更新表,ejabberd保持內部狀態,並沒有得到您的更改通知。

要走的路是實際讓用戶發送相互訂閱,並接受他們根據rfcRoster Item Exchange也可能有用。