2

JSJaCejabberdを使用してライブチャットを構築しています。すべてのサイト訪問者にアカウント「ゲスト」が与えられることを除いて、すべて機能しています。2 人の訪問者が同時にライブチャットを試みると、応答が混乱するか、最初のユーザーがログアウトされます。

ゲスト名をランダムに設定できますが、その名前が登録されているか自動登録されているかを確認する必要があり、以前に登録されていないことを願っています。各ログインをランダムなリソース名に割り当てようとしましたが、それでも会話がマージされました。

要するに、複数の匿名ログインが livechat アカウントとの個々の会話を開始できるようにする最も簡単な方法を探しています。プライマリ ライブチャット アカウントがチャット中に、ライブチャットが別のユーザーにラウンド ロビンできれば、さらに良い (ただしオプション)。

ソリューションは、Web クライアント ベースまたはサーバー ベースのどちらでもかまいません。私は両方を制御しているので気にしません (また、ejabberd はさまざまなモジュールをサポートしています)。

ところで、登録済みアカウントを自動登録しようとすると、JSJaC simpleclient デモが次のように返します。

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

これがカスタムクライアントまたはサーバーセットアップで無視またはオーバーライドできるものかどうかはまだ確立していません. このエラーを検出して、自動登録せずに再試行できると思いますが、より良い/より簡単なオプションを聞きたいです。

4

4 に答える 4

2

ejabberdサーバーで匿名ログインモードを有効にしてみてください。次に、クライアントアカウントを登録する必要はありません。ランダムなユーザー名とパスワードを選択するだけで、ejabberdがそれらを受け入れる必要があります...

于 2009-06-19T05:07:11.070 に答える
2

私はあなたがejabberdで外部認証を使用できると思います私は同じ状況にいます:匿名ユーザーがサーバーにログインできるようにしたいのですが、一部の特別なユーザーも管理タスクのためにログインできるようにしたい...だから私は書くことにしましたejabberd の認証ハンドラーとしての php スクリプト。次に、anon_* で始まる名前のすべてのログインを受け入れ、データベースに対して他のユーザーを認証します。

于 2012-11-11T17:00:54.577 に答える
1

プロジェクトで同様の問題がありました。ユーザーがアカウントの作成や衝突を必要とせずにログインできるようにしたかったのですが、名前が衝突する可能性があるため、自動登録は機能しませんでした。最終的に、ejabberd で SASL 認証を使用した匿名ログインを選択しました。これにより、匿名ログインと動的アカウント作成が可能になり、アカウントはシステムにとどまらないと思います (接続が開いている間のみ有効です)。サーバーはユーザーのランダム ID を生成します。

GUID JID の問題は、ニックネームを使用して解決できる可能性があります

SASL を設定する

Ejabberd サポート ページ - SASL

于 2009-06-24T09:25:57.320 に答える