https://issues.apache.org/bugzilla/show_bug.cgi?id=54381

            Bug ID: 54381
           Summary: Websocket StreamInbound never reports receipt of a
                    Pong
           Product: Tomcat 7
           Version: 7.0.34
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Catalina
          Assignee: dev@tomcat.apache.org
          Reporter: david.berk...@grenadefish.net
    Classification: Unclassified

The tomcat websocket api now allows the send of a Ping frame by the server (as
of 7.0.33), via WsOutbound, but never reports the receipt of a Pong. See
StreamInbound in the onData() method...

                } else if (opCode == Constants.OPCODE_PONG) {
                    // NO-OP
                }

As the intended use of Pings is for heartbeat messages, allowing a Ping without
informing the server extension of the returned Pong leaves out half the
utility.

I would suggest these changes to StreamInbound as a fix...

1) In the onData() method...

                } else if (opCode == Constants.OPCODE_PONG) {
                    onPong(frame.getPayLoad());
                }

2) Add a method onPong (ByteBuffer buffer)...

    protected void onPong(ByteBuffer buffer) {
        // NO-OP
    }

...which implementations may now override to handle Pong receipt and heartbeat
logic. This is necessary as onData() is marked final, so there's no alternate
workaround.

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to