Emmet
Emmet

Reputation: 21

ClientWebSocketContainer - can it be used on the client side to create a websocket connection?

The ClientWebSocketContainer Spring class can provide a websocket connection session to a remote endpoint. Though if an attempt is made to re-establish a closed connection (after a failed attempt) by using the ClientWebSocketContainer stop(), start(), and then getSession() methods, the connection is established but the ClientWebSocketContainer thinks it isn't connected due to the openConnectionException set in the failed attempt.

@Override
public void onFailure(Throwable t) {
    logger.error("Failed to connect", t);
    ClientWebSocketContainer.this.openConnectionException = t;
    ClientWebSocketContainer.this.connectionLatch.countDown();
}

Should I be able to use the ClientWebSocketContainer in this fashion or should I create my own client connection manager?

Upvotes: 2

Views: 289

Answers (1)

Artem Bilan
Artem Bilan

Reputation: 121560

I think it's just a bug, some kind of omission in the ClientWebSocketContainer logic.

I've just raised a JIRA on the matter. Will be fixed today.

Meanwhile give us more information what is your task?

The ClientWebSocketContainer is based on the ConnectionManagerSupport, where one of its implementation is WebSocketConnectionManager. So, consider to use the last one for obtaining the session.

If you use Spring Integration WebSocket Adapters, you don't have choice unless implement your own ClientWebSocketContainer variant. Yes, it fully may be based on the existing one.

Upvotes: 1

Related Questions