diff --git a/src/main/java/org/java_websocket/client/WebSocketClient.java b/src/main/java/org/java_websocket/client/WebSocketClient.java index 0e38326d..45e81e3f 100644 --- a/src/main/java/org/java_websocket/client/WebSocketClient.java +++ b/src/main/java/org/java_websocket/client/WebSocketClient.java @@ -25,6 +25,7 @@ package org.java_websocket.client; +import java.io.BufferedOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -850,17 +851,20 @@ public void run() { * @throws IOException if write or flush did not work */ private void runWriteData() throws IOException { + BufferedOutputStream bufferedInputStream = new BufferedOutputStream(ostream); try { while (!Thread.interrupted()) { ByteBuffer buffer = engine.outQueue.take(); - ostream.write(buffer.array(), 0, buffer.limit()); - ostream.flush(); + bufferedInputStream.write(buffer.array(), 0, buffer.limit()); + if (engine.outQueue.isEmpty()) { + bufferedInputStream.flush(); + } } } catch (InterruptedException e) { for (ByteBuffer buffer : engine.outQueue) { - ostream.write(buffer.array(), 0, buffer.limit()); - ostream.flush(); + bufferedInputStream.write(buffer.array(), 0, buffer.limit()); } + bufferedInputStream.flush(); Thread.currentThread().interrupt(); } }