From ccffa0d5c244cf586d71655418cbe238841ef3df Mon Sep 17 00:00:00 2001 From: Redkale <22250530@qq.com> Date: Mon, 15 Jan 2018 15:11:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8D=95=E4=B8=AAWebSocket?= =?UTF-8?q?=E5=B9=B6=E5=8F=91=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/org/redkale/net/http/WebSocketRunner.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/org/redkale/net/http/WebSocketRunner.java b/src/org/redkale/net/http/WebSocketRunner.java index 52aaffd43..8341eb31f 100644 --- a/src/org/redkale/net/http/WebSocketRunner.java +++ b/src/org/redkale/net/http/WebSocketRunner.java @@ -218,7 +218,12 @@ class WebSocketRunner implements Runnable { //if (debug) context.getLogger().log(Level.FINEST, "send web socket message: " + packet); final CompletableFuture futureResult = new CompletableFuture<>(); if (writing.getAndSet(true)) { - queue.add(new QueueEntry(futureResult, packet)); + QueueEntry qe = new QueueEntry(futureResult, packet); + queue.add(qe); + if (!writing.get()) { //防止刚好CompletionHandler进程在poll之后获取null正准备writing.set(false)时进入queue.add(qe)。导致本消息不能发送 + queue.remove(qe); + return sendMessage(packet); + } return futureResult; } ByteBuffer[] buffers = packet.sendBuffers != null ? packet.duplicateSendBuffers() : packet.encode(this.context.getBufferSupplier());