简体   繁体   中英

Web Socket Connection Disconnecting - ApacheAMQ

I'm trying to use STOMP with Apache AMQ as I was hoping web sockets would give me a better performance than the typicalorg.activemq.Amq Ajax connection.

Anyway, my activemq config file has the proper entry

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

And I'm connecting to it via the following means:

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);

}

When I first open up the web browser & navigate to http://localhost:8161/admin/connections.jsp It shows the following:

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

Shortly there after - it removes itself. Is there something else I need such as a heart beat to keep the connection alive?

Using

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

Kept the connection up for the TCP AJAX Connection

I have faced similar problem, solved it using this

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

You have to add these two lines before connect. Even after this I have seen disconnection after 5-10 minutes, if there are no incoming messages. To solve that you have to implement ondisconnect call back of connect method.

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

This is successfully working in my application.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM