base64 でエンコードされた文字列 (画像から変換されたもの) を websocket 経由で送信しようとしていますが、これは JavaScript クライアントで正常に機能しています。
しかし、代わりに Java クライアント (@clientEndPoint) を使用すると、onMessage 関数が 1 回トリガーされ、websocket 接続がすぐに閉じられます。エラーなし。
繰り返しますが、サーバーからプレーン文字列を送信してみましたが、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
}
ここでは、ハンドル メッセージが 1 回呼び出され、対応する sysout が出力され、すぐに onClose が呼び出されます。onError が呼び出されることはありません。