code: @OnMessage
      public void onBinaryMessage(InputStream binaryDataStream, Session session) {
          String requestClassName = "?";
          try {
              // parse the JSON and get its message POJO, including any additional binary data being streamed
              BasicMessageWithExtraData<BasicMessage> reqWithData = new ApiDeserializer().deserialize(binaryDataStream);
              BasicMessage request = reqWithData.getBasicMessage();
              requestClassName = request.getClass().getName();
              log.infoReceivedBinaryData(requestClassName, session.getId(), endpoint);
  
              handleRequest(session, reqWithData);
  
          } catch (Throwable t) {
              log.errorWsCommandExecutionFailure(requestClassName, session.getId(), endpoint, t);
              String errorMessage = "BusCommand failed [" + requestClassName + "]";
              sendErrorResponse(session, errorMessage, t);
          }
      }
docs: When a binary message is received from a WebSocket client, this method will lookup the {@link WsCommand} for the
  given request class and execute it.
  
  @param binaryDataStream contains the JSON request and additional binary data
  @param session the client session making the request