You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Claudio Parodi (JIRA)" <ji...@apache.org> on 2015/03/05 12:49:39 UTC

[jira] [Commented] (AMQ-5155) Heartbeat fails in STOMP over WebSockets

    [ https://issues.apache.org/jira/browse/AMQ-5155?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14348653#comment-14348653 ] 

Claudio Parodi commented on AMQ-5155:
-------------------------------------

Hi, 
I have created a patch for activemq 5.9.1 version that seems to work.

These are my changes for org.apache.activemq.transport.ws.StompSocket:

1. in doStart() I set transportListener to remove NPE:
{code}
@Override
    protected void doStart() throws Exception {
        socketTransportStarted.countDown();
		stompInactivityMonitor.setTransportListener(this.getTransportListener());
    }
{code}

2. in onMessage(String data) I managed keepalive frame:
{code}
if (!transportStartedAtLeastOnce()) {
            LOG.debug("Waiting for StompSocket to be properly started...");
            try {
                socketTransportStarted.await();
            } catch (InterruptedException e) {
                LOG.warn("While waiting for StompSocket to be properly started, we got interrupted!! Should be okay, but you could see race conditions...");
            }
        }
        try {
	      if (data!=null && data.equals("\n"))
		{
		    sendToActiveMQ(new KeepAliveInfo());
		}
	      else {
		   protocolConverter.onStompCommand((StompFrame)wireFormat.unmarshal(new ByteSequence(data.getBytes("UTF-8"))));
		}
        } catch (Exception e) {
            onException(IOExceptionSupport.create(e));
        }
{code}

Can I share with you my code in a better way?
Thanks
Claudio Parodi

> Heartbeat fails in STOMP over WebSockets
> ----------------------------------------
>
>                 Key: AMQ-5155
>                 URL: https://issues.apache.org/jira/browse/AMQ-5155
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: 5.9.1, 5.10.0
>            Reporter: Arjan van den Berg
>            Assignee: Dejan Bosanac
>            Priority: Minor
>
> From AMQ-4740:
> I receive the following error after establishing a connection and heartbeat through stomp.js. This seems to occur after the 'PING' is sent.
> ---------- stomp.js output
> <<< CONNECTED
> heart-beat:10000,10000
> session:ID:localhost.localdomain-45596-1396530920609-2:2
> server:ActiveMQ/5.10-SNAPSHOT
> version:1.1
> send PING every 10000ms 
> check PONG every 10000ms 
> <<< PONG 
> >>> PING 
> did not receive server activity for the last 20005ms 
> Whoops! Lost connection to ws://172.16.99.73:61614/stomp
> --------------------- activemq console ---------------
> WARN | Transport Connection to: StompSocket_19548821 failed: java.io.IOException
> Exception in thread "ActiveMQ InactivityMonitor Worker" java.lang.NullPointerException
> at org.apache.activemq.transport.AbstractInactivityMonitor.onException(AbstractInactivityMonitor.java:314)
> at org.apache.activemq.transport.AbstractInactivityMonitor$4.run(AbstractInactivityMonitor.java:215)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
> at java.lang.Thread.run(Thread.java:722)
> WARN | Transport Connection to: StompSocket_19548821 failed: java.io.IOException
> Exception in thread "ActiveMQ InactivityMonitor Worker" java.lang.NullPointerException
> at org.apache.activemq.transport.AbstractInactivityMonitor.onException(AbstractInactivityMonitor.java:314)
> at org.apache.activemq.transport.AbstractInactivityMonitor$4.run(AbstractInactivityMonitor.java:215)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
> at java.lang.Thread.run(Thread.java:722)
> For me it looks as if the StompInactivityMonitor is delivering its events to the wrong Transport, i.e. it needs a "narrow()" when setting it up.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)