1
我在Debian v8.2
上运行rabbitmq-server v3.3.5-1.1
。我在docs启用rabbitmq_web_stomp
和rabbitmq_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