【发布时间】:2016-11-14 04:22:26
【问题描述】:
我正在做一个有趣的项目,该项目需要我学习消息队列和 websocket。我正在尝试通过 websockets 将浏览器连接到使用 sockjs 而不是纯 websockets 的 rabbitmq 实例。在 rabbit 上,我已经激活了 stomp 和 web_stomp 的插件(使用 sockjs 时需要 web_stomp)。
我遇到的问题是,虽然来自浏览器的调用似乎工作正常,因为通过 webstomp/stomp 连接与 Rabbit 建立了一个非常短暂的连接,但在 2 或 3 秒后,Rabbit 断开了连接。
rabbitmq 日志证实了这一点:
=信息报告==== 2016 年 7 月 11 日::23:01:54 === 接受 STOMP 连接 (192.168.1.10:49746 -> 192.168.1.100:55674)
=信息报告==== 2016 年 7 月 11 日::23:02:02 === 关闭 STOMP 连接 (192.168.1.10:49746 -> 192.168.1.100:55674)
这是通过 webstomp 插件连接到 RabbitMQ 的浏览器代码:
var 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));
}
);
这是兔子配置:
[
{rabbitmq_stomp, [{default_user, [{login, "test"},
{passcode, "test"}
]
},
{tcp_listeners, [{"192.168.1.100", 55674}]},
{heartbeat, 0}
]
}
]
我已经阅读了 Rabbit 文档一百万次,但这感觉就像我忽略了一些简单的事情。
【问题讨论】:
标签: rabbitmq stomp sockjs web-stomp