2013-11-05 65 views
5

從這個問題首先: Asmack/openfire How do I keep a user permanently in groupchat room的Openfire - 永久的羣聊使用PubSub的

我看,我不能使用MUC保持用戶組中的執着,他們會自動離開本集團,可以重新加入他們來了之後在線再次,這個概念就像IRC一樣,在這裏問 - >http://community.igniterealtime.org/thread/48020

然後從stackoverflow的問題我讀了關於使用pubsub,然後我做了一些關於pubsub的研究,我得到的是pubsub可以堅持用戶在組中,即使用戶處於脫機狀態,但消息流更像是從發佈者到訂閱者的一個方向(只讀)。

因此,如果我想創建一個羣聊應用程序,我可以使用pubsub並將所有成員設置爲發佈者和訂閱者?或者是否有其他解決方案?或者我對pubsub和MUC的理解不正確? 我的目標是在WhatsApp或黑莓信使羣組中創建一些羣聊。

謝謝。

+0

不是100%確定你正在嘗試做什麼。您是否試圖完成保留用戶列表並顯示其在線狀態? –

+0

@MarkStraley不,不需要那樣,所以我想創建一個messenger應用程序,用戶可以在其中創建一個組,並且該組成員將始終在該組中,並且該消息將始終在該組中傳遞,因此,當用戶想要閱讀他/她必須打開羣組聊天的羣組消息,你明白我的意思嗎? –

+0

如果我理解你是對的,請看看花名冊。您可以使用花名冊創建組。我認爲一些名單組和pubsub的組合可能就是你以後的事情。我的第一個想法不是MUC。一旦您在名單中訂閱/授權,它將保留至刪除。 –

回答

3

通過更改以下openfire代碼,您可以讓用戶在MUC的羣聊中永久保留。

File : src/java/org/jivesoftware/openfire/muc/spi/LocalMUCUser.java 

change line 547-550: 

// TODO Consider that different nodes can be creating and processing this presence at the same time (when 

remote node went down) 

removeRole(group); 

role.getChatRoom().leaveRoom(role); 

TO: 

// TODO Consider that different nodes can be creating and processing this presence at the same time (when 

remote node went down) 

// TODO Dont remove user from group when they go offline. 

//removeRole(group); 

//role.getChatRoom().leaveRoom(role); 
+0

你測試了這個。如果我從muc中刪除用戶,那麼甚至會工作?請回復。提前致謝。 – jagdish

+0

當用戶連接丟失時,用戶將不會離開組。如果你明確地這樣做,那麼它將不起作用 –

+0

感謝您的快速響應。我想要什麼應用程序相同。我已經嘗試過使用您的代碼,但無法按預期工作。它可能有其他的替代方法嗎? – jagdish