Модуль BOSH не запущен: проблема с настройкой Ejabberd / Strophe

Я пытаюсь настроить Strophe с Ejabberd на Ubuntu 12 (последняя версия Linode), используя внутренний веб-сервер Ejabberd для обслуживания чата.

Тестовые URL-адреса (http://aviezri.org:5280/http-bind и admin) оба работают.
JWChat работает.
Strophe выдает ошибку:

In Strophe:
RECV: <body xmlns='http://jabber.org/protocol/httpbind' type='terminate' condition='internal-server-error'>BOSH module not started</body>

In ejabberd.log:  
E(<0.468.0>:ejabberd_http_bind:1236) : 
You are trying to use BOSH (HTTP Bind) in host "admin", but the module mod_http_bind is not started in that host. 
Configure your BOSH client to connect to the correct host, or add your desired host`

Настройка была простой (хотя на это ушло довольно много времени):

  1. Устанавливается с помощью sudo apt-get
  2. Запуск под sudo
  3. Использование внутреннего сервера, чтобы не возиться с прокси или настраивать PunJab.
  4. В ejabberd.cfg внесены изменения.

Изменения в ejabberd.cfg:

%% In listening ports, amended the following lines:  
{ request_handlers,  [   
   {["pub"], mod_http_fileserver},   
   {["http-bind"], mod_http_bind}  
]},  

%% In modules, added the following:  
{ mod_http_fileserver, [   
   {docroot, "/var/lib/ejabberd/www"},   
   {accesslog, "/var/log/ejabberd/access.log"}   
]},  
{mod_http_bind,  []},

Любая помощь приветствуется.


person SamGoody    schedule 26.02.2013    source источник


Ответы (1)


Ответ довольно очевиден.

Strophe требует имя пользователя в следующем формате:

имя пользователя@хост
например. [email protected]

В противном случае он предполагает, что имя пользователя действительно является хостом, и, поскольку такой хост не существует, выдает ошибку, что mod_http_bind is not started in that host

Эта ошибка в лучшем случае вводит в заблуждение, но технически она объясняет проблему.
Я пытался войти, используя только имя пользователя [которое отлично работало в JWChat], отсюда и проблема.

На случай, если это не сработает, контрольный список некоторых других вещей, которые нужно проверить:

  1. Убедитесь, что ваш домен добавлен в /etc/hosts

    127.0.0.1    localhost.localdomain   localhost
    12.34.56.78  squire.example.com  squire
    
  2. Убедитесь, что ваш домен добавлен в /etc/ejabberd/ejabberd.cfg.

    %% Hostname
    Hostname {hosts, ["example.com","98.765.43.21","localhost"]}.
    
  3. Убедитесь, что ваше имя пользователя существует и зарегистрировано:

    ejabberdctl register username example.com password
    

    И если пользователь является админом, он включается в ejabberd.cfg [Примечание: он должен быть также зарегистрирован!]

    %% Admin user
    {acl, admin, {user, "", "localhost"}}.
    {acl, admin, {user, "admin", "example.com"}}.
    
  4. Убедитесь, что сервер работает:

    a. sudo ejabberdctl status  
    b. http://example.com:5280/admin  
    c. http://example.com:5280/http-bind
    
  5. Если есть проблемы, перезапустите, используя оба (я знаю, что вам не нужны оба в теории. На практике иногда использование одного или другого не будет работать правильно).

    sudo /etc/init.d/ejabberd restart
    sudo ejabberdctl restart
    
  6. Проверьте журналы - /var/log/ejabberd/ejabberd.log (см. здесь).

  7. Установите JWChat и попробуйте (или, если у вас есть JWChat, установите Strophe).
    Следующее краткое руководство бесценно, точно следуйте ему: http://www.ejabberd.im/jwchat-localserver

person SamGoody    schedule 27.02.2013