Закрытие WebSocket при отправке строк кодирования Base64

Я пытаюсь отправить строку в кодировке base64 (конвертированную из изображения) через websocket, и это работает нормально для меня с клиентом javascript.

Но если я вместо этого использую Java-клиент (@clientEndPoint), функция onMessage срабатывает один раз, и соединение с веб-сокетом немедленно закрывается. Нет ошибок

Опять же, я попытался отправить обычные строки с сервера и Java-клиент работает должным образом. Но только не с base64-закодированными строками.

Я использую Tomcat 7.0.69 и ниже приведены фрагменты кода:

Конечная точка сервера:

if (imageToBeSend != null) {
   encodedImage = new sun.misc.BASE64Encoder().encode(imageToBeSend);
   session.getBasicRemote().sendText(encodedImage);
   }

Java-клиент:

@ClientEndpoint
public class SomeClass {
    CountDownLatch latch = new CountDownLatch(1);
    private Session session;
    String msg;

    @OnOpen
    public void open(Session session) {
        this.session = session; 
        //some stuff
    }

    @OnClose
    public void close(Session session) {
        System.out.println("Closing the connection");
    }

    @OnError
    public void onError(Throwable error) {
        System.out.println("!!!ERROR!!!!!" + error);
        error.printStackTrace();
    }

    @OnMessage
    public void handleMessage(String message, Session session) throws IOException {
     System.out.println("got the json string  "+message.length());
     // more stuff
    }

Здесь дескриптор сообщения вызывается один раз, и соответствующий sysout печатается, а затем немедленно вызывается onClose. onError никогда не вызывается.

0 ответов

Другие вопросы по тегам