質問

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

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

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

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

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

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

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

役に立ちましたか?

解決

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

他のヒント

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

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

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

SASLをセットアップ

Ejabberdサポートページ-SASL

ejabberdの匿名モードが機能しない場合は、 GUID を作成してみてください。各ユーザーのベース名、およびその場でユーザーを登録するだけです。データベースから古い未使用のアカウントを削除する定期的なスクリプトが必要になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top