2009-06-19 33 views
2

我正在使用JSJaCejabberd建立實時聊天。除了所有網站訪問者都被授予帳戶'guest'之外,所有工作都是有效的。如果兩位訪問者在同一時間嘗試進行實時聊天,則回覆混亂或第一位用戶退出。Jabber隨機名稱自動登錄

我可以隨意設置客人姓名,但我需要檢查該名稱是否已註冊或自動註冊,並希望以前沒有註冊。我嘗試將每個登錄名分配給一個隨機資源名稱,但這仍然合併了對話。

總之,我正在尋找最簡單的方法來允許多個匿名登錄與Livechat帳戶開始個人對話。甚至更好(但可選),當主聊天帳戶正在聊天時,即時聊天可以循環訪問不同的用戶。

該解決方案可以基於Web客戶端或服務器,我不在乎,因爲我控制兩個(和ejabberd支持各種模塊)。

BTW,當我嘗試自動註冊處註冊的賬號的JSJaC SimpleClient的演示回報:

An error occured: 
Code: 409 
Type: cancel 
Condition: conflict 

我還沒有確定但如果這是我可以忽略或自定義客戶端或服務器覆蓋建立。我想我可以檢測到這個錯誤,然後再次嘗試,但沒有自動註冊,但我想聽聽更好/更簡單的選項。

回答

2

嘗試在您的ejabberd服務器上啓用anonymous login mode?然後,您不必註冊客戶帳戶,只需選擇任意的用戶名和密碼,ejabberd就可以接受他們...

+0

謝謝,我不確定存在這樣的事情。聽起來就像我在做什麼。 – SpliFF 2009-06-19 05:15:34

+0

奇怪的是,它不起作用,雖然我按照指示信(我得到401未經授權的錯誤)。我會在serverfault或ejabberd上詢問,但這個答案仍然可以接受。 – SpliFF 2009-06-19 06:38:52

0

如果您無法獲得ejabberd的匿名模式,您可以嘗試爲每個帳戶創建一個GUID用戶的基本名稱,以及即時註冊用戶。您將需要一個定期腳本,從數據庫中刪除舊的未使用帳戶。

+0

這實際上是我最後做的,儘管我用的是比guid更短的名字。儘管給你答案已經太遲了。實際上我使用匿名模式工作,但它一直在分配類似GUID的名稱,而不是用戶選擇的名稱。運營商可能會使用PDA/Iphone,因此我不希望[email protected]/help等用戶堵塞聊天窗口房地產。 – SpliFF 2009-06-22 03:47:24

1

我們在一個項目中遇到了類似的問題 - 我們希望用戶能夠在不需要創建任何帳戶或衝突的情況下進行登錄 - 自動註冊對我們無效,因爲名稱可能會發生衝突。最後,我們在ejabberd中選擇了使用SASL身份驗證的匿名登錄 - 它允許匿名登錄和動態帳戶創建,我相信帳戶不會留在系統中(只有在連接打開時它們才存在),但是從我記憶中服務器將爲用戶生成一個隨機ID。

的GUID JID問題可能是能夠與使用Nicknames

Set up SASL

Ejabberd Support Page - SASL

2

可以解決我想你可以使用外部身份驗證在ejabberd 我在同樣的情況:我希望匿名用戶能夠在服務器上登錄,但一些特殊用戶也可以登錄adiminstrative任務... 因此,我決定編寫一個php腳本作爲ejabberd的身份驗證處理程序。 然後,它將接受所有以anon_ * 開頭的名稱並根據數據庫對其他用戶進行身份驗證。