【问题标题】:RabbitMQ STOMP connectionRabbitMQ STOMP 连接
【发布时间】: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


    【解决方案1】:

    已解决。梳理日志后,我意识到 web_stomp 正在侦听端口 15674,因此我更改了配置文件以反映这一点。我发誓我曾在某个时候做出过这种改变,但似乎并没有什么不同。

    我在发出请求之前所做的最新更改之一是关闭心跳。我读过的所有内容都表明 sockjs 不支持心跳,并且有人建议将其关闭而不是使用默认值。除了在配置文件中关闭心跳之外,我还在浏览器代码中添加了这个:

    client.heartbeat.outgoing=0;
    client.heartbeat.incoming=0;
    

    【讨论】:

      猜你喜欢
      • 2019-05-08
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      • 2014-02-13
      • 2018-03-09
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多