https://bz.apache.org/bugzilla/show_bug.cgi?id=57762
Bug ID: 57762
Summary: WebSocket client doesn't detect forceful connection
failures
Product: Tomcat 8
Version: 8.0.20
Hardware: PC
OS: Mac OS X 10.1
Status: NEW
Severity: normal
Priority: P2
Component: WebSocket
Assignee: [email protected]
Reporter: [email protected]
It appears that the WebSocket client can't detect when a connection is
forcefully closed. Given the following example program:
public class App2 {
@ClientEndpoint
public static class Client {
@OnClose
public void onClose() {
System.out.println("CLOSED");
}
@OnError
public void onError(Throwable t) {
System.out.println("ERROR: " + t);
}
}
public static void main(final String[] args) throws Exception {
final WebSocketContainer container =
ContainerProvider.getWebSocketContainer();
System.out.println("Container: " + container);
container.connectToServer(
Client.class,
URI.create("ws://echo.websocket.org/"));
Thread.sleep(Long.MAX_VALUE);
}
}
I then modified /etc/hosts so that echo.websocket.org resolved to localhost. I
then set up an SSH tunnel to direct local port 80 to echo.websocket.org (which
is 174.129.224.73):
sudo ssh me@someserver -L 80:174.129.224.73:80
I then started the program. It connected. Next, I killed the SSH session.
Neither the onClosed on onError methods were invoked.
When I tested the same program running on Tyrus 1.10, however, onClose was
invoked with a CloseReason 10006 - Closed Abnormally.
I think the Tyrus behavior is correct - the socket is dead and the program
should be notified.
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]