Hi,
I am using tomcat 8.0.23 to terminate my websocket connections. I have
the following code to take care of the incoming messages:
@OnMessage
public void onMsg(Session session, byte[] request) {
executorService.execute(() ->
session.getAsyncRemote().sendBinary(
ByteBuffer.wrap(getResponse(session,
request)), result -> {
if (!result.isOK()) {
LOGGER.catching(result.getException());
}
}
));
}
But I get the following exception:
Exception in thread "pool-6-thread-10160"
java.lang.IllegalStateException: The remote endpoint was in state
[BINARY_FULL_WRITING] which is an invalid state for called method
at
org.apache.tomcat.websocket.WsRemoteEndpointImplBase$StateMachine.checkState(WsRemoteEndpointImplBase.java:1148)
at
org.apache.tomcat.websocket.WsRemoteEndpointImplBase$StateMachine.binaryStart(WsRemoteEndpointImplBase.java:1101)
at
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendBytesByCompletion(WsRemoteEndpointImplBase.java:152)
at
org.apache.tomcat.websocket.WsRemoteEndpointAsync.sendBinary(WsRemoteEndpointAsync.java:65)
>From what I understand from java doc, RemoteEndpoint.Async.sendBinary
should not throw IllegalStateException:
> sendBinary void sendBinary(ByteBuffer data, SendHandler handler)
> Throws: IllegalArgumentException - if either the data or the handler are null.
It is also good to note that RemoEndpoint.Basic (not
RemoteEndpoint.Async) has the following paragraph in java doc:
> If the websocket connection underlying this RemoteEndpoint is busy sending a
> message when a call is made to send another one, for example if two threads
> attempt to call a send method concurrently, or if a developer attempts to
> send a new message while in the middle of sending an existing one, the send
> method called while the connection is already busy may throw an
> IllegalStateException.
Is this expected behaviour from tomcat or a possible implementation bug?
Cheers
Farzad
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]