Web套接字连接断开连接 - ApacheAMQ

时间:2014-07-23 16:45:10

标签: html5 apache websocket stomp

我试图将STOMP与Apache AMQ一起使用,因为我希望网络套接​​字能够提供比typicalorg.activemq.Amq Ajax连接更好的性能。

无论如何,我的activemq配置文件有正确的条目

    <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

我通过以下方式连接到它:

function amqWebSocketConn() {
        var url = "ws://my.ip.address:61614/stomp";
        var client = Stomp.client(url);

        var connect_callback = function() {
            alert('connected to stomp');

            client.subscribe("topic://MY.TOPIC",callback);

            var callback = function(message) {
               if (message.body) {
                    alert("got message with body " + message.body);
                } else { alert("got empty message"); }
            };
        };

    client.connect("", "", connect_callback);

}

当我第一次打开网络浏览器&amp;导航到http://localhost:8161/admin/connections.jsp它显示以下内容:

Name                                    Remote Address      Active      Slow 
ID:mymachine-58770-1406129136930-4:9    StompSocket_657224557   true    false

之后不久就会消失。还有其他我需要的东西,比如心跳以保持连接活着吗?

使用

                var amq = org.activemq.Amq;
                amq.init({
                    uri : '/myDomain/amq',
                    timeout : 50,
                    clientId : (new Date()).getTime().toString()
                });

保持TCP AJAX连接的连接

1 个答案:

答案 0 :(得分:0)

我遇到过类似的问题,用这个解决了它

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

您必须在连接前添加这两行。 即使在此之后,我已经看到5-10分钟后断开连接,如果没有传入消息。要解决这个问题,你必须实现连接方法的ondisconnect回调。

client.connect('','',connect_callback,function(frame){
//Connection Lost
console.log(frame);
//Reconnect and subscribe again from here
});

这在我的申请中成功运作。