2016-01-23 229 views
1

我在Debian v8.2上运行rabbitmq-server v3.3.5-1.1。我在docs启用rabbitmq_web_stomprabbitmq_web_stomp_examples按照建议:RabbitMQ WebSocket 404 Not Found

rabbitmq-plugins enable rabbitmq_web_stomp 
rabbitmq-plugins enable rabbitmq_web_stomp_examples 

http://127.0.0.1:15670工作中接触的所有例子如预期,但它们都使用SockJS而非本地浏览器的WebSocket

// Stomp.js boilerplate 
var ws = new SockJS('http://' + window.location.hostname + ':15674/stomp'); 
var client = Stomp.over(ws); 

我想坚持WebSocket,所以我尝试了文档中建议的内容:

var ws = new WebSocket('ws://127.0.0.1:15674/ws'); 

这将引发错误我的脸:

WebSocket connection to 'ws://127.0.0.1:15674/ws' failed: Error during WebSocket handshake: Unexpected response code: 404 

进一步的测试与netcat确认404

# netcat -nv 127.0.0.1 15674 
127.0.0.1 15674 open 
GET /ws HTTP/1.1 
Host: 127.0.0.1 

HTTP/1.1 404 Not Found 
Connection: close 
Content-Length: 0 
Date: Sat, 23 Jan 2016 20:15:13 GMT 
Server: Cowboy 

显然cowboy不公开/ws路,所以我不知道:

  • 在这种情况下可以重新配置cowboy吗?怎么样?这值得么?
  • 我可以用nginx代替cowboy优选选项)吗?怎么样?
  • 我还有什么其他选择?

编辑

的RabbitMQ docs是误导性的。正确的WebSocket URI:

http://127.0.0.1:15674/stomp/websocket 

回答

0

不错,但是:

新的WebSocket( 'http://127.0.0.1:15674/stomp/websocket')

VM98:2 Uncaught DOMException: Failed to construct 'WebSocket': The URL's scheme must be either 'ws' or 'wss'. 'http' is not allowed.(…)(anonymous function) ... 

需要使用WS/WSS-模式:

新的WebSocket('ws://127.0.0.1:15674/stomp/webs ocket')

WebSocket {url: "ws://127.0.0.1:15674/stomp/websocket", readyState: 0, bufferedAmount: 0, onopen: null, onerror: null…} 
相关问题