2016-07-12 27 views
0

Ich arbeite an einem lustigen Projekt, bei dem ich Message Queues und Websockets lernen muss. Ich versuche Browser über Websockets mit einer Instanz von rabbitmq zu verbinden, indem ich Socken statt reiner Websockets verwende. Auf Hasen habe ich die Plugins für stomp und web_stomp aktiviert (web_stomp wird benötigt, wenn sockjs verwendet wird).RabbitMQ STOMP connection

Das Problem ist, dass während der Anruf vom Browser scheint ordnungsgemäß zu funktionieren, weil eine sehr kurze Verbindung zu Rabbit über die Webstomp/Stomp-Verbindung hergestellt wird, aber nach 2 oder 3 Sekunden wird die Verbindung von Rabbit fallen gelassen .

Dies wird durch die rabbitmq Protokolle bestätigt:

= INFO REPORT ==== 11-Jul-2016 :: 23: 01: 54 === Annahme STOMP Verbindung (192.168.1.10:49746 - > 192.168.1.100:55674)
= INFO REPORT ==== 11-Jul-2016 :: 23: 02: 02 === Schließen der STOMP-Verbindung (192.168.1.10:49746 -> 192.168.1.100:55674)

Dies ist der Browser-Code, der über das webstomp Plugin RabbitMQ verbindet:
Hiervar 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)); } );

ist das Kaninchen config: [ {rabbitmq_stomp, [{default_user, [{login, "test"}, {passcode, "test"} ] }, {tcp_listeners, [{"192.168.1.100", 55674}]}, {heartbeat, 0} ] } ]. Ich war über die Kaninchen docs eine Million mal, aber das fühlt sich an wie etwas einfach, dass ich mit Blick auf.

Antwort

0

Gelöst. Nachdem ich die Logs durchkämmt hatte, merkte ich, dass web_stomp Port 15674 abhörte, also änderte ich die Konfigurationsdatei entsprechend. Ich schwöre, ich hatte diese Änderung irgendwann vorgenommen, aber es schien keinen Unterschied zu machen.

Eine der späten Änderungen, die ich vor dem Senden meiner Anfrage vorgenommen habe, war das Ausschalten des Herzschlags. Alles, was ich gelesen habe, besagt, dass Sockjs Heartbeat nicht unterstützt und dass es Vorschläge gibt, es auszuschalten, anstatt den Standard zu verwenden. Zusätzlich zum Ausschalten des Heartbeats in der Konfigurationsdatei habe ich dies auch zum Browser-Code hinzugefügt:

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