websocket链接本地RabbitMQ失败
报错内容
Opening Web Socket...
WebSocket connection to 'ws://localhost:15674/ws' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
Whoops! Lost connection to ws://localhost:15674/ws
连接失败!
页面部分(纯静态)
<!DOCTYPE html>
<html>
<head></head>
<body>
<h1>WebSocket Test Page</h1>
<ul id="list"></ul>
<script src="https://cdn.bootcss.com/stomp.js/2.3.3/stomp.js"></script>
<script src="https://cdn.bootcss.com/sockjs-client/1.1.4/sockjs.js"></script>
<script type="text/javascript">
if (typeof WebSocket == 'undefined') {
console.log('不支持websocket')
}
// 初始化 ws 对象
var ws = new WebSocket('ws://localhost:15674/ws');
// 获得Stomp client对象
var client = Stomp.over(ws);
// 定义连接成功回调函数
var on_connect = function (x) {
//同上
console.log('connected')
client.subscribe("/exchange/xxx/xxx", function (data) {
console.log('收到数据:', data)
insertNode(data.body)
});
};
// 定义错误时回调函数
var on_error = function () {
console.log('connect was error!');
};
// 连接RabbitMQ,输入用户名和密码,连接成功和失败函数
client.connect('guest', 'guest', on_connect, on_error, '/');
function insertNode(string){
var wrap = document.getElementById('list')
var el = document.createElement('li')
el.append(string)
wrap.appendChild(el)
}
</script>
</body>
</html>
rabbitmq(docker)
exchange也创建了新的交换机
queue也创建了新的路由并且绑定了exchange新创建的交换机
结果总是报错链接不上,
错误原因
rabbitMQ在默认用docker图形化软件启动后,没有关于插件web-stomp端口15674的映射,所以websocket链接建立不起来,用以下命令启动即可解决
docker run -d --name rabbitmq -p 15676:15671 -p 15672:15672 -p 15691:15691 -p 15702:15692 -p 25672:25672 -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 15674:15674 rabbitmq:management
报所有端口都映射出去,再次刷新页面就可以连通了,也可以正常订阅接受消息