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)