From 6bb2e152a54feaf096fdac3065becc917fb1db2d Mon Sep 17 00:00:00 2001 From: Redkale <22250530@qq.com> Date: Wed, 30 May 2018 18:23:12 +0800 Subject: [PATCH] --- src/org/redkale/net/http/WebSocketRunner.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/org/redkale/net/http/WebSocketRunner.java b/src/org/redkale/net/http/WebSocketRunner.java index 24d2ed324..8ad807b28 100644 --- a/src/org/redkale/net/http/WebSocketRunner.java +++ b/src/org/redkale/net/http/WebSocketRunner.java @@ -41,7 +41,7 @@ class WebSocketRunner implements Runnable { private final AtomicBoolean writing = new AtomicBoolean(); - private final BlockingQueue queue = new ArrayBlockingQueue(1024); + private final BlockingQueue queue = new ArrayBlockingQueue(256); private final BiConsumer restMessageConsumer; //主要供RestWebSocket使用 @@ -219,15 +219,16 @@ class WebSocketRunner implements Runnable { boolean debug = context.getLogger().isLoggable(Level.FINEST); //System.out.println("推送消息"); final CompletableFuture futureResult = new CompletableFuture<>(); - synchronized (writing) { - if (writing.getAndSet(true)) { - queue.add(new QueueEntry(futureResult, packet)); - return futureResult; - } - } - ByteBuffer[] buffers = packet.sendBuffers != null ? packet.duplicateSendBuffers() : packet.encode(this.context.getBufferSupplier(), this.context.getBufferConsumer(), webSocket._engine.cryptor); - //if (debug) context.getLogger().log(Level.FINEST, "wsrunner.sending websocket message: " + packet); try { + synchronized (writing) { + if (writing.getAndSet(true)) { + queue.add(new QueueEntry(futureResult, packet)); + return futureResult; + } + } + ByteBuffer[] buffers = packet.sendBuffers != null ? packet.duplicateSendBuffers() : packet.encode(this.context.getBufferSupplier(), this.context.getBufferConsumer(), webSocket._engine.cryptor); + //if (debug) context.getLogger().log(Level.FINEST, "wsrunner.sending websocket message: " + packet); + this.lastSendTime = System.currentTimeMillis(); channel.write(buffers, buffers, new CompletionHandler() {