From ce4509bf5c18599c29717f51dd9973421f60e348 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=9C=B0=E5=B9=B3=E7=BA=BF?= <22250530@qq.com> Date: Sat, 19 Sep 2015 16:07:56 +0800 Subject: [PATCH] --- src/com/wentch/redkale/net/http/WebSocketRunner.java | 11 ++++++++--- src/com/wentch/redkale/net/http/WebSocketServlet.java | 3 ++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/com/wentch/redkale/net/http/WebSocketRunner.java b/src/com/wentch/redkale/net/http/WebSocketRunner.java index 082c88869..b46650c02 100644 --- a/src/com/wentch/redkale/net/http/WebSocketRunner.java +++ b/src/com/wentch/redkale/net/http/WebSocketRunner.java @@ -39,17 +39,18 @@ public class WebSocketRunner implements Runnable { private AtomicBoolean writing = new AtomicBoolean(); - private final Coder coder = new Coder(); + private final Coder coder; private final BlockingQueue queue = new ArrayBlockingQueue(1024); private final boolean wsbinary; - public WebSocketRunner(Context context, WebSocket webSocket, AsyncConnection channel, final boolean wsbinary) { + public WebSocketRunner(Context context, WebSocket webSocket, AsyncConnection channel, final boolean maskData, final boolean wsbinary) { this.context = context; this.engine = webSocket.engine; this.webSocket = webSocket; this.channel = channel; + this.coder = new Coder(maskData); this.wsbinary = wsbinary; webSocket.runner = this; this.coder.logger = context.getLogger(); @@ -358,7 +359,7 @@ public class WebSocketRunner implements Runnable { protected byte outFragmentedType; - protected final boolean maskData = false; + protected final boolean maskData; protected boolean processingFragment; @@ -366,6 +367,10 @@ public class WebSocketRunner implements Runnable { private Logger logger; + Coder(boolean maskData) { + this.maskData = maskData; + } + /** 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 diff --git a/src/com/wentch/redkale/net/http/WebSocketServlet.java b/src/com/wentch/redkale/net/http/WebSocketServlet.java index d4043d006..235dfe8fd 100644 --- a/src/com/wentch/redkale/net/http/WebSocketServlet.java +++ b/src/com/wentch/redkale/net/http/WebSocketServlet.java @@ -116,6 +116,7 @@ public abstract class WebSocketServlet extends HttpServlet implements Nameable { response.setHeader("Connection", "Upgrade"); response.addHeader("Upgrade", "websocket"); response.addHeader("Sec-WebSocket-Accept", key); + final boolean mask = "13".equals(request.getHeader("Sec-WebSocket-Version")); response.sendBody((ByteBuffer) null, null, new CompletionHandler() { @Override @@ -129,7 +130,7 @@ public abstract class WebSocketServlet extends HttpServlet implements Nameable { } webSocket.groupid = groupid; engine.add(webSocket); - context.submit(new WebSocketRunner(context, webSocket, response.removeChannel(), wsbinary)); + context.submit(new WebSocketRunner(context, webSocket, response.removeChannel(), mask, wsbinary)); response.finish(true); }