1

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 が呼び出されることはありません。

4

0 に答える 0