Author: markt
Date: Tue Jan 8 20:44:30 2013
New Revision: 1430508
URL: http://svn.apache.org/viewvc?rev=1430508&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=54381
Add support for receiving pong messages.
Modified:
tomcat/trunk/java/org/apache/catalina/websocket/StreamHandler.java
Modified: tomcat/trunk/java/org/apache/catalina/websocket/StreamHandler.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/websocket/StreamHandler.java?rev=1430508&r1=1430507&r2=1430508&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/websocket/StreamHandler.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/websocket/StreamHandler.java Tue Jan
8 20:44:30 2013
@@ -98,7 +98,7 @@ public abstract class StreamHandler impl
} else if (opCode == Constants.OPCODE_PING) {
getWsOutbound().pong(frame.getPayLoad());
} else if (opCode == Constants.OPCODE_PONG) {
- // NO-OP
+ doOnPong(frame.getPayLoad());
} else {
// Unknown OpCode
closeOutboundConnection(
@@ -190,6 +190,18 @@ public abstract class StreamHandler impl
}
}
+ private void doOnPong(ByteBuffer payload) {
+ // Need to call onPong using the web application's class loader
+ Thread t = Thread.currentThread();
+ ClassLoader cl = t.getContextClassLoader();
+ t.setContextClassLoader(applicationClassLoader);
+ try {
+ onPong(payload);
+ } finally {
+ t.setContextClassLoader(cl);
+ }
+ }
+
@Override
public final void init(WebConnection webConnection) {
@@ -238,6 +250,15 @@ public abstract class StreamHandler impl
// NO-OP
}
+ /**
+ * Intended to be overridden by sub-classes that wish to be notified
+ * when a pong is received. The default implementation is a NO-OP.
+ *
+ * @param payload The payload included in the pong.
+ */
+ protected void onPong(ByteBuffer payload) {
+ // NO-OP
+ }
/**
* This method is called when there is a binary WebSocket message available
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]