2016-07-12 7 views
0

Я работаю над интересным проектом, который требует от меня изучения очередей сообщений и веб-узлов. Я пытаюсь подключить браузеры через websockets к экземпляру rabbitmq, используя sockjs, а не чистые websockets. На кролике я активировал плагины для stomp и web_stomp (при использовании sockjs требуется web_stomp).RabbitMQ STOMP connection

Проблема, с которой я столкнулся, заключается в том, что, хотя звонок из браузера работает правильно, потому что очень короткое соединение с кроликом осуществляется через соединение webstomp/stomp, но через 2 или 3 секунды соединение сбрасывается Кроликом ,

Это подтверждается бревнами RabbitMQ:

= ИНФО ОТЧЕТ ==== 11-Jul-2016 :: 23: 01: 54 === принимает соединение ТОПАЙТЕ (192.168.1.10:49746 - > 192.168.1.100:55674)
= ИНФОРМАЦИОННЫЙ ОТЧЕТ ==== 11-июл-2016 :: 23: 02: 02 === закрытие соединения STOMP (192.168.1.10:49746 -> 192.168.1.100:55674)

Это код браузера, который соединяет RabbitMQ через плагин webstomp:
var url = "http://192.168.1.100:55674/stomp"; var ws = new SockJS(url); var client = Stomp.over(ws); var header = { login: 'test', passcode: 'test' }; client.connect(header, function(){ console.log('Hooray! Connected'); }, function(error){ console.log('Error connecting to WS via stomp:' + JSON.stringify(error)); } );

Вот Кролик конфигурации: [ {rabbitmq_stomp, [{default_user, [{login, "test"}, {passcode, "test"} ] }, {tcp_listeners, [{"192.168.1.100", 55674}]}, {heartbeat, 0} ] } ]. Я был за Кролика документы в миллион раз, но это чувствует, как что-то простое, что я с видом.

ответ

0

Решено. После расчесывания журналов я понял, что web_stomp прослушивает порт 15674, поэтому я изменил файл конфигурации, чтобы отразить это. Клянусь, я сделал это изменение в какой-то момент, но, похоже, это не изменило ситуацию.

Одна из последних изменений, внесенных мной перед отправкой моего запроса, заключалась в том, чтобы отключить сердцебиение. Все, что я прочитал, гласит, что sockjs не поддерживает heartbeat и что есть предложения по его отключению, а не по умолчанию. В дополнение к отключению сердцебиения в файле конфигурации я также добавил это в код браузера:

client.heartbeat.outgoing=0; 
client.heartbeat.incoming=0;