Закрытие 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 никогда не вызывается.