Вопрос

Я создаю чат с использованием JSJaC и ejabberd . Это все работает, за исключением того, что все посетители сайта получают учетную запись «гость». Если два посетителя пытаются одновременно общаться в чате, ответы запутываются или первый пользователь выходит из системы.

Я могу произвольно установить имя гостя, но затем мне нужно проверить, зарегистрировано ли это имя или авторегистрацию, и надеюсь, что оно не было зарегистрировано ранее. Я пытался присвоить каждому логину случайное имя ресурса, но это все равно объединяло разговоры.

Короче говоря, я ищу самый простой способ, позволяющий нескольким анонимным входам в систему начать индивидуальные разговоры с использованием учетной записи livechat. Еще лучше (но не обязательно), если livechat может циклически перебирать другого пользователя, когда основная учетная запись livechat находится в чате.

Решение может быть на основе веб-клиента или сервера, мне все равно, так как я управляю обоими (а ejabberd поддерживает различные модули).

Кстати, когда я пытаюсь автоматически зарегистрировать зарегистрированную учетную запись, возвращается демо JSJaC simpleclient:

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

Я еще не установил, могу ли я это игнорировать или переопределить с помощью пользовательской настройки клиента или сервера. Полагаю, я мог бы просто обнаружить эту ошибку и повторить попытку без автоматической регистрации, но мне хотелось бы услышать лучшие / более простые варианты.

Это было полезно?

Решение

Попробуйте включить режим анонимного входа на своем сервер ejabberd? Тогда вам не нужно регистрировать учетные записи клиентов, просто выберите любое имя пользователя и пароль, и ejabberd должен их принять ...

Другие советы

Я полагаю, вы можете использовать внешнюю аутентификацию в ejabberd Я нахожусь в той же ситуации: я хочу, чтобы анонимные пользователи могли входить на сервер, но некоторые специальные пользователи также могут входить для выполнения задач, не требующих решения ... Поэтому я решил написать скрипт php в качестве обработчика аутентификации для ejabberd. Затем он примет все логины с именем, начинающимся с anon_ * и аутентифицировать других пользователей по базе данных.

У нас была похожая проблема в проекте - мы хотели, чтобы пользователи могли войти в систему, не требуя создания учетной записи или столкновений - автоматическая регистрация не будет работать для нас, потому что имена могут конфликтовать. В итоге мы выбрали анонимный вход с аутентификацией SASL в ejabberd - он позволяет анонимный вход и динамическое создание учетной записи, и я считаю, что учетные записи не остаются в системе (они активны, пока открыто соединение), однако из того, что я помню, Сервер сгенерирует случайный идентификатор для пользователя.

Проблема GUID JID может быть решена с помощью псевдонимов

Настройка SASL

Страница поддержки Ejabberd - SASL

Если вы не можете настроить анонимный режим ejabberd, попробуйте создать GUID для каждого базового имени пользователя, и просто регистрация пользователя на лету. Вам понадобится периодический скрипт, который удаляет старые неиспользуемые учетные записи из базы данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top