I've got the following testing script (executed with node, real client is a browser, result is the same):
const SockJS = require('sockjs-client');
const webstomp = require('webstomp-client');
let sock = new SockJS(/*INSERT_URL_HERE*/);
let stomp = webstomp.over(sock, {
heartbeat: false,
});
stomp.connect({}, function() {
console.log('connected');
}, function() {
console.log('disconnected');
});
Versions in use:
- Spring Boot - 1.5.3
- Spring Cloud Netflix - 1.3.1
- Nginx - 1.11
- RabbitMQ - 3.6.9
To exclude parts of our infrastructure (Like NGINX as Proxy to route subdomains etc.) being the root of evil, I tried connecting to the Spring based Stomp Broker Relay (using RabbitMQ as real Broker) directly, via the NGINX Proxy and through Zuul.
The first two variants work as intended, but the third one (Using Zuul as Gateway with the ResourceServer annotation) fails. Increasing the timeouts didn't help, as the problem seems to reside in the "handshake". This is what I could get from the client side logs so far (Log for the first 2 variants, everything works fine, even webstomp could be established):
sockjs-client:main using url http://domain.tld/stomp +0ms
sockjs-client:utils:url same http://domain.tld/stomp http://localhost/ false +4ms
sockjs-client:info-receiver http://domain.tld/stomp +3ms
Opening Web Socket...
sockjs-client:info-receiver doXhr http://domain.tld/stomp/info +5ms
sockjs-client:driver:xhr GET http://domain.tld/stomp/info undefined +1ms
sockjs-client:driver:xhr data {"entropy":394670331,"origins":["*:*"],"cookie_needed":true,"websocket":false} +100ms
sockjs-client:driver:xhr end +2ms
sockjs-client:info-receiver finish { entropy: 394670331,
origins: [ '*:*' ],
cookie_needed: true,
websocket: false } 103 +1ms
sockjs-client:info-receiver _cleanup +5ms
sockjs-client:main _receiveInfo 103 +1ms
sockjs-client:main info { entropy: 394670331,
origins: [ '*:*' ],
cookie_needed: true,
websocket: false,
nullOrigin: false,
sameOrigin: false,
sameScheme: true } +1ms
sockjs-client:utils:transport disabled from server websocket +0ms
sockjs-client:utils:transport enabled xhr-streaming +1ms
sockjs-client:utils:transport disabled xdr-streaming +0ms
sockjs-client:utils:transport enabled eventsource +0ms
sockjs-client:utils:transport disabled iframe-eventsource +0ms
sockjs-client:utils:transport disabled htmlfile +1ms
sockjs-client:utils:transport disabled iframe-htmlfile +0ms
sockjs-client:utils:transport enabled xhr-polling +0ms
sockjs-client:utils:transport disabled xdr-polling +0ms
sockjs-client:utils:transport disabled iframe-xhr-polling +0ms
sockjs-client:utils:transport disabled jsonp-polling +0ms
sockjs-client:main 3 enabled transports +0ms
sockjs-client:main attempt xhr-streaming +0ms
sockjs-client:main using timeout 824 +0ms
sockjs-client:main transport url http://domain.tld/stomp/365/5rfribd0 +1ms
sockjs-client:sender-receiver http://domain.tld/stomp/365/5rfribd0/xhr_streaming +0ms
sockjs-client:buffered-sender http://domain.tld/stomp/365/5rfribd0 +1ms
sockjs-client:polling http://domain.tld/stomp/365/5rfribd0/xhr_streaming +0ms
sockjs-client:polling _scheduleReceiver +2ms
sockjs-client:receiver:xhr http://domain.tld/stomp/365/5rfribd0/xhr_streaming +0ms
sockjs-client:driver:xhr POST http://domain.tld/stomp/365/5rfribd0/xhr_streaming null +1ms
sockjs-client:driver:xhr data hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
+60ms
sockjs-client:receiver:xhr _chunkHandler 200 +0ms
sockjs-client:receiver:xhr message hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh +0ms
sockjs-client:polling message hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh +0ms
sockjs-client:sender-receiver poll message hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh +1ms
sockjs-client:main _transportMessage hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh +0ms
sockjs-client:main heartbeat undefined +5ms
sockjs-client:driver:xhr data o
+0ms
sockjs-client:receiver:xhr _chunkHandler 200 +0ms
sockjs-client:receiver:xhr message o +0ms
sockjs-client:polling message o +0ms
sockjs-client:sender-receiver poll message o +2ms
sockjs-client:main _transportMessage o +0ms
sockjs-client:main _open xhr-streaming 0 +1ms
Web Socket Opened...
>>> CONNECT
accept-version:1.2,1.1,1.0
heart-beat:0,0
>>> length 110
sockjs-client:buffered-sender send "CONNECT\naccept-version:1.2,1.1,1.0\nheart-beat:0,0\n\n\u0000" +2ms
sockjs-client:buffered-sender sendSchedule 1 +0ms
sockjs-client:ajax-based create ajax sender http://domain.tld/stomp/365/5rfribd0 ["CONNECT\naccept-version:1.2,1.1,1.0\nheart-beat:0,0\n\n\u0000"] +0ms
sockjs-client:driver:xhr POST http://domain.tld/stomp/365/5rfribd0/xhr_send ["CONNECT\naccept-version:1.2,1.1,1.0\nheart-beat:0,0\n\n\u0000"] +0ms
sockjs-client:main connected xhr-streaming +2ms
sockjs-client:driver:xhr end +111ms
sockjs-client:ajax-based finish 204 +0ms
sockjs-client:buffered-sender sendScheduleWait +1ms
sockjs-client:buffered-sender timeout +26ms
sockjs-client:buffered-sender sendSchedule 0 +0ms
sockjs-client:driver:xhr data a["CONNECTED\nserver:RabbitMQ/3.6.9\nsession:session--67Xn59asIOtXSwEHL4NZQ\nheart-beat:0,0\nversion:1.2\n\n\u0000"]
+186ms
sockjs-client:receiver:xhr _chunkHandler 200 +1ms
sockjs-client:receiver:xhr message a["CONNECTED\nserver:RabbitMQ/3.6.9\nsession:session--67Xn59asIOtXSwEHL4NZQ\nheart-beat:0,0\nversion:1.2\n\n\u0000"] +0ms
sockjs-client:polling message a["CONNECTED\nserver:RabbitMQ/3.6.9\nsession:session--67Xn59asIOtXSwEHL4NZQ\nheart-beat:0,0\nversion:1.2\n\n\u0000"] +0ms
sockjs-client:sender-receiver poll message a["CONNECTED\nserver:RabbitMQ/3.6.9\nsession:session--67Xn59asIOtXSwEHL4NZQ\nheart-beat:0,0\nversion:1.2\n\n\u0000"] +0ms
sockjs-client:main _transportMessage a["CONNECTED\nserver:RabbitMQ/3.6.9\nsession:session--67Xn59asIOtXSwEHL4NZQ\nheart-beat:0,0\nversion:1.2\n\n\u0000"] +0ms
sockjs-client:main message xhr-streaming CONNECTED
server:RabbitMQ/3.6.9
session:session--67Xn59asIOtXSwEHL4NZQ
heart-beat:0,0
version:1.2
+0ms
<<< CONNECTED
server:RabbitMQ/3.6.9
session:session--67Xn59asIOtXSwEHL4NZQ
heart-beat:0,0
version:1.2
connected to server RabbitMQ/3.6.9
connected
sockjs-client:driver:xhr data a["\n"]
+4ms
sockjs-client:receiver:xhr _chunkHandler 200 +0ms
sockjs-client:receiver:xhr message a["\n"] +0ms
sockjs-client:polling message a["\n"] +0ms
sockjs-client:sender-receiver poll message a["\n"] +0ms
sockjs-client:main _transportMessage a["\n"] +0ms
sockjs-client:main message xhr-streaming
+0ms
<<< PONG
But when using Zuul, the following happens (the "Handshake" request fails by timing out):
sockjs-client:main using url http://domain.tld/stomp +0ms
sockjs-client:utils:url same http://domain.tld/stomp http://localhost/ false +4ms
sockjs-client:info-receiver http://domain.tld/stomp +3ms
Opening Web Socket...
sockjs-client:info-receiver doXhr http://domain.tld/stomp/info +8ms
sockjs-client:driver:xhr GET http://domain.tld/stomp/info undefined +1ms
sockjs-client:driver:xhr data {"entropy":886967672,"origins":["*:*"],"cookie_needed":true,"websocket":false} +280ms
sockjs-client:driver:xhr end +3ms
sockjs-client:info-receiver finish { entropy: 886967672,
origins: [ '*:*' ],
cookie_needed: true,
websocket: false } 284 +1ms
sockjs-client:info-receiver _cleanup +4ms
sockjs-client:main _receiveInfo 284 +1ms
sockjs-client:main info { entropy: 886967672,
origins: [ '*:*' ],
cookie_needed: true,
websocket: false,
nullOrigin: false,
sameOrigin: false,
sameScheme: false } +1ms
sockjs-client:utils:transport disabled from server websocket +2ms
sockjs-client:utils:transport enabled xhr-streaming +1ms
sockjs-client:utils:transport disabled xdr-streaming +0ms
sockjs-client:utils:transport enabled eventsource +0ms
sockjs-client:utils:transport disabled iframe-eventsource +1ms
sockjs-client:utils:transport disabled htmlfile +0ms
sockjs-client:utils:transport disabled iframe-htmlfile +0ms
sockjs-client:utils:transport enabled xhr-polling +0ms
sockjs-client:utils:transport disabled xdr-polling +0ms
sockjs-client:utils:transport disabled iframe-xhr-polling +1ms
sockjs-client:utils:transport disabled jsonp-polling +0ms
sockjs-client:main 3 enabled transports +0ms
sockjs-client:main attempt xhr-streaming +6ms
sockjs-client:main using timeout 2272 +0ms
sockjs-client:main transport url http://domain.tld/stomp/490/5sugacsu +0ms
sockjs-client:sender-receiver http://domain.tld/stomp/490/5sugacsu/xhr_streaming +1ms
sockjs-client:buffered-sender http://domain.tld/stomp/490/5sugacsu +0ms
sockjs-client:polling http://domain.tld/stomp/490/5sugacsu/xhr_streaming +0ms
sockjs-client:polling _scheduleReceiver +0ms
sockjs-client:receiver:xhr http://domain.tld/stomp/490/5sugacsu/xhr_streaming +0ms
sockjs-client:driver:xhr POST http://domain.tld/stomp/490/5sugacsu/xhr_streaming null +1ms
sockjs-client:main _transportTimeout +2s
sockjs-client:main _transportClose undefined 2007 Transport timed out +0ms
sockjs-client:main attempt eventsource +0ms
sockjs-client:main using timeout 2272 +1ms
sockjs-client:main transport url http://domain.tld/stomp/490/s50jl3qh +1ms
sockjs-client:sender-receiver http://domain.tld/stomp/490/s50jl3qh/eventsource +0ms
sockjs-client:buffered-sender http://domain.tld/stomp/490/s50jl3qh +0ms
sockjs-client:polling http://domain.tld/stomp/490/s50jl3qh/eventsource +0ms
sockjs-client:polling _scheduleReceiver +1ms
sockjs-client:receiver:eventsource http://domain.tld/stomp/490/s50jl3qh/eventsource +0ms
sockjs-client:receiver:eventsource error 0 Event { type: 'error' } +28ms
sockjs-client:receiver:eventsource cleanup +1ms
sockjs-client:receiver:eventsource close network +0ms
sockjs-client:polling close null network undefined +202ms
sockjs-client:polling _scheduleReceiver +0ms
I hope anyone has an idea to solve this. It seems like the sockjs response isn't returned by Zuul or something in this direction. Even using Trace on serverside didn't show up any errors...
The gateway itself is a simple setup with @SpringBootApplication, @EnableZuulProxy, @EnableResourceServer and this configuration:
# increase the timeout of the proxy
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 60000
ribbon:
ConnectTimeout: 3000
ReadTimeout: 60000
zuul:
host:
connect-timeout-millis: 3000
socket-timeout-millis: 60000
# We don't want to automatically register all service available on Eureka
ignored-services: "*"
retryable: true
# Default is "Cookie,Set-Cookie,Authorization", but we want to forward the Bearer Token
sensitive-headers: Cookie,Set-Cookie
routes:
stomp:
path: /stomp/**
serviceId: stomp
strip-prefix: true