diff --git a/src/main/java/io/netty/example/http/websocketx/autobahn/WebSocketServerHandler.java b/src/main/java/io/netty/example/http/websocketx/autobahn/WebSocketServerHandler.java index 0c45b75241..204679d734 100644 --- a/src/main/java/io/netty/example/http/websocketx/autobahn/WebSocketServerHandler.java +++ b/src/main/java/io/netty/example/http/websocketx/autobahn/WebSocketServerHandler.java @@ -72,11 +72,11 @@ public class WebSocketServerHandler extends SimpleChannelUpstreamHandler { // Handshake WebSocketServerHandshakerFactory wsFactory = new WebSocketServerHandshakerFactory( this.getWebSocketLocation(req), null, false); - this.handshaker = wsFactory.newHandshaker(ctx, req); + this.handshaker = wsFactory.newHandshaker(req); if (this.handshaker == null) { - wsFactory.sendUnsupportedWebSocketVersionResponse(ctx); + wsFactory.sendUnsupportedWebSocketVersionResponse(ctx.getChannel()); } else { - this.handshaker.performOpeningHandshake(ctx, req); + this.handshaker.performOpeningHandshake(ctx.getChannel(), req); } } @@ -85,7 +85,7 @@ public class WebSocketServerHandler extends SimpleChannelUpstreamHandler { .format("Channel %s received %s", ctx.getChannel().getId(), frame.getClass().getSimpleName())); if (frame instanceof CloseWebSocketFrame) { - this.handshaker.performClosingHandshake(ctx, (CloseWebSocketFrame) frame); + this.handshaker.performClosingHandshake(ctx.getChannel(), (CloseWebSocketFrame) frame); } else if (frame instanceof PingWebSocketFrame) { ctx.getChannel().write( new PongWebSocketFrame(frame.isFinalFragment(), frame.getRsv(), frame.getBinaryData())); diff --git a/src/main/java/io/netty/example/http/websocketx/server/WebSocketServerHandler.java b/src/main/java/io/netty/example/http/websocketx/server/WebSocketServerHandler.java index 25e77bdf40..702e15b8e6 100644 --- a/src/main/java/io/netty/example/http/websocketx/server/WebSocketServerHandler.java +++ b/src/main/java/io/netty/example/http/websocketx/server/WebSocketServerHandler.java @@ -92,11 +92,11 @@ public class WebSocketServerHandler extends SimpleChannelUpstreamHandler { // Handshake WebSocketServerHandshakerFactory wsFactory = new WebSocketServerHandshakerFactory( this.getWebSocketLocation(req), null, false); - this.handshaker = wsFactory.newHandshaker(ctx, req); + this.handshaker = wsFactory.newHandshaker(req); if (this.handshaker == null) { - wsFactory.sendUnsupportedWebSocketVersionResponse(ctx); + wsFactory.sendUnsupportedWebSocketVersionResponse(ctx.getChannel()); } else { - this.handshaker.performOpeningHandshake(ctx, req); + this.handshaker.performOpeningHandshake(ctx.getChannel(), req); } } @@ -104,7 +104,7 @@ public class WebSocketServerHandler extends SimpleChannelUpstreamHandler { // Check for closing frame if (frame instanceof CloseWebSocketFrame) { - this.handshaker.performClosingHandshake(ctx, (CloseWebSocketFrame) frame); + this.handshaker.performClosingHandshake(ctx.getChannel(), (CloseWebSocketFrame) frame); return; } else if (frame instanceof PingWebSocketFrame) { ctx.getChannel().write(new PongWebSocketFrame(frame.getBinaryData())); diff --git a/src/main/java/io/netty/example/http/websocketx/sslserver/WebSocketSslServerHandler.java b/src/main/java/io/netty/example/http/websocketx/sslserver/WebSocketSslServerHandler.java index bb1307fcb0..8274fa6354 100644 --- a/src/main/java/io/netty/example/http/websocketx/sslserver/WebSocketSslServerHandler.java +++ b/src/main/java/io/netty/example/http/websocketx/sslserver/WebSocketSslServerHandler.java @@ -92,11 +92,11 @@ public class WebSocketSslServerHandler extends SimpleChannelUpstreamHandler { // Handshake WebSocketServerHandshakerFactory wsFactory = new WebSocketServerHandshakerFactory( this.getWebSocketLocation(req), null, false); - this.handshaker = wsFactory.newHandshaker(ctx, req); + this.handshaker = wsFactory.newHandshaker(req); if (this.handshaker == null) { - wsFactory.sendUnsupportedWebSocketVersionResponse(ctx); + wsFactory.sendUnsupportedWebSocketVersionResponse(ctx.getChannel()); } else { - this.handshaker.performOpeningHandshake(ctx, req); + this.handshaker.performOpeningHandshake(ctx.getChannel(), req); } } @@ -104,7 +104,7 @@ public class WebSocketSslServerHandler extends SimpleChannelUpstreamHandler { // Check for closing frame if (frame instanceof CloseWebSocketFrame) { - this.handshaker.performClosingHandshake(ctx, (CloseWebSocketFrame) frame); + this.handshaker.performClosingHandshake(ctx.getChannel(), (CloseWebSocketFrame) frame); return; } else if (frame instanceof PingWebSocketFrame) { ctx.getChannel().write(new PongWebSocketFrame(frame.getBinaryData())); diff --git a/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker.java b/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker.java index a787e5fc59..c2c432f7a1 100644 --- a/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker.java +++ b/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker.java @@ -20,7 +20,7 @@ import java.security.NoSuchAlgorithmException; import io.netty.buffer.ChannelBuffer; import io.netty.buffer.ChannelBuffers; -import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.Channel; import io.netty.handler.codec.base64.Base64; import io.netty.handler.codec.http.HttpRequest; import io.netty.util.CharsetUtil; @@ -40,7 +40,7 @@ public abstract class WebSocketServerHandshaker { /** * Constructor specifying the destination web socket location - * + * * @param webSocketURL * URL for web socket communications. e.g * "ws://myhost.com/mypath". Subsequent web socket frames will be @@ -96,28 +96,28 @@ public abstract class WebSocketServerHandshaker { /** * Performs the opening handshake - * - * @param ctx - * Context + * + * @param channel + * Channel * @param req * HTTP Request * @throws NoSuchAlgorithmException */ - public abstract void performOpeningHandshake(ChannelHandlerContext ctx, HttpRequest req); + public abstract void performOpeningHandshake(Channel channel, HttpRequest req); /** * Performs the closing handshake - * - * @param ctx - * Context + * + * @param channel + * Channel * @param frame * Closing Frame that was received */ - public abstract void performClosingHandshake(ChannelHandlerContext ctx, CloseWebSocketFrame frame); + public abstract void performClosingHandshake(Channel channel, CloseWebSocketFrame frame); /** * Performs an MD5 hash - * + * * @param bytes * Data to hash * @return Hashed data @@ -133,7 +133,7 @@ public abstract class WebSocketServerHandshaker { /** * SHA-1 hashing. Instance this we think it is not thread safe - * + * * @param bytes * byte to hash * @return hashed @@ -149,7 +149,7 @@ public abstract class WebSocketServerHandshaker { /** * Base 64 encoding - * + * * @param bytes * Bytes to encode * @return encoded string @@ -161,7 +161,7 @@ public abstract class WebSocketServerHandshaker { /** * Selects the first matching supported sub protocol - * + * * @param requestedSubProtocol * CSV of protocols to be supported. e.g. "chat, superchat" * @return First matching supported sub protocol. Null if not found. diff --git a/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker00.java b/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker00.java index 7059a77ab6..646037c732 100644 --- a/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker00.java +++ b/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker00.java @@ -32,11 +32,14 @@ import java.security.NoSuchAlgorithmException; import io.netty.buffer.ChannelBuffer; import io.netty.buffer.ChannelBuffers; -import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.Channel; import io.netty.channel.ChannelPipeline; +import io.netty.handler.codec.http.HttpChunkAggregator; import io.netty.handler.codec.http.DefaultHttpResponse; import io.netty.handler.codec.http.HttpRequest; +import io.netty.handler.codec.http.HttpRequestDecoder; import io.netty.handler.codec.http.HttpResponse; +import io.netty.handler.codec.http.HttpResponseEncoder; import io.netty.handler.codec.http.HttpResponseStatus; import io.netty.handler.codec.http.HttpHeaders.Names; import io.netty.handler.codec.http.HttpHeaders.Values; @@ -60,7 +63,7 @@ public class WebSocketServerHandshaker00 extends WebSocketServerHandshaker { /** * Constructor specifying the destination web socket location - * + * * @param webSocketURL * URL for web socket communications. e.g * "ws://myhost.com/mypath". Subsequent web socket frames will be @@ -82,11 +85,11 @@ public class WebSocketServerHandshaker00 extends WebSocketServerHandshaker { * href="http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-75" * >hixie-75. *

- * + * *

* Browser request to the server: *

- * + * *
      * GET /demo HTTP/1.1
      * Upgrade: WebSocket
@@ -95,14 +98,14 @@ public class WebSocketServerHandshaker00 extends WebSocketServerHandshaker {
      * Origin: http://example.com
      * Sec-WebSocket-Key1: 4 @1  46546xW%0l 1 5
      * Sec-WebSocket-Key2: 12998 5 Y3 1  .P00
-     * 
+     *
      * ^n:ds[4U
      * 
- * + * *

* Server response: *

- * + * *
      * HTTP/1.1 101 WebSocket Protocol Handshake
      * Upgrade: WebSocket
@@ -110,21 +113,21 @@ public class WebSocketServerHandshaker00 extends WebSocketServerHandshaker {
      * Sec-WebSocket-Origin: http://example.com
      * Sec-WebSocket-Location: ws://example.com/demo
      * Sec-WebSocket-Protocol: sample
-     * 
+     *
      * 8jKS'y:G*Co,Wxa-
      * 
- * - * @param ctx - * Channel context + * + * @param channel + * Channel * @param req * HTTP request * @throws NoSuchAlgorithmException */ @Override - public void performOpeningHandshake(ChannelHandlerContext ctx, HttpRequest req) { + public void performOpeningHandshake(Channel channel, HttpRequest req) { if (logger.isDebugEnabled()) { - logger.debug(String.format("Channel %s web socket spec version 00 handshake", ctx.getChannel().getId())); + logger.debug(String.format("Channel %s web socket spec version 00 handshake", channel.getId())); } this.setVersion(WebSocketSpecificationVersion.V00); @@ -174,25 +177,25 @@ public class WebSocketServerHandshaker00 extends WebSocketServerHandshaker { } // Upgrade the connection and send the handshake response. - ChannelPipeline p = ctx.getChannel().getPipeline(); - p.remove("aggregator"); - p.replace("decoder", "wsdecoder", new WebSocket00FrameDecoder()); + ChannelPipeline p = channel.getPipeline(); + p.remove(HttpChunkAggregator.class); + p.replace(HttpRequestDecoder.class, "wsdecoder", new WebSocket00FrameDecoder()); - ctx.getChannel().write(res); + channel.write(res); - p.replace("encoder", "wsencoder", new WebSocket00FrameEncoder()); + p.replace(HttpResponseEncoder.class, "wsencoder", new WebSocket00FrameEncoder()); } /** * Echo back the closing frame - * - * @param ctx - * Channel context + * + * @param channel + * Channel * @param frame * Web Socket frame that was received */ @Override - public void performClosingHandshake(ChannelHandlerContext ctx, CloseWebSocketFrame frame) { - ctx.getChannel().write(frame); + public void performClosingHandshake(Channel channel, CloseWebSocketFrame frame) { + channel.write(frame); } } diff --git a/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker10.java b/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker10.java index c3b895a832..30ae72e957 100644 --- a/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker10.java +++ b/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker10.java @@ -20,13 +20,16 @@ import static io.netty.handler.codec.http.HttpVersion.HTTP_1_1; import java.security.NoSuchAlgorithmException; +import io.netty.channel.Channel; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelFutureListener; -import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelPipeline; +import io.netty.handler.codec.http.HttpChunkAggregator; import io.netty.handler.codec.http.DefaultHttpResponse; import io.netty.handler.codec.http.HttpRequest; +import io.netty.handler.codec.http.HttpRequestDecoder; import io.netty.handler.codec.http.HttpResponse; +import io.netty.handler.codec.http.HttpResponseEncoder; import io.netty.handler.codec.http.HttpResponseStatus; import io.netty.handler.codec.http.HttpHeaders.Names; import io.netty.logging.InternalLogger; @@ -51,7 +54,7 @@ public class WebSocketServerHandshaker10 extends WebSocketServerHandshaker { /** * Constructor specifying the destination web socket location - * + * * @param webSocketURL * URL for web socket communications. e.g * "ws://myhost.com/mypath". Subsequent web socket frames will be @@ -73,11 +76,11 @@ public class WebSocketServerHandshaker10 extends WebSocketServerHandshaker { * "http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-08">HyBi * version 8 to 10. Version 8, 9 and 10 share the same wire protocol. *

- * + * *

* Browser request to the server: *

- * + * *
      * GET /chat HTTP/1.1
      * Host: server.example.com
@@ -88,11 +91,11 @@ public class WebSocketServerHandshaker10 extends WebSocketServerHandshaker {
      * Sec-WebSocket-Protocol: chat, superchat
      * Sec-WebSocket-Version: 8
      * 
- * + * *

* Server response: *

- * + * *
      * HTTP/1.1 101 Switching Protocols
      * Upgrade: websocket
@@ -100,18 +103,18 @@ public class WebSocketServerHandshaker10 extends WebSocketServerHandshaker {
      * Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
      * Sec-WebSocket-Protocol: chat
      * 
- * - * @param ctx - * Channel context + * + * @param channel + * Channel * @param req * HTTP request * @throws NoSuchAlgorithmException */ @Override - public void performOpeningHandshake(ChannelHandlerContext ctx, HttpRequest req) { + public void performOpeningHandshake(Channel channel, HttpRequest req) { if (logger.isDebugEnabled()) { - logger.debug(String.format("Channel %s web socket spec version 10 handshake", ctx.getChannel().getId())); + logger.debug(String.format("Channel %s web socket spec version 10 handshake", channel.getId())); } HttpResponse res = new DefaultHttpResponse(HTTP_1_1, new HttpResponseStatus(101, "Switching Protocols")); @@ -139,27 +142,27 @@ public class WebSocketServerHandshaker10 extends WebSocketServerHandshaker { res.addHeader(Names.SEC_WEBSOCKET_PROTOCOL, this.selectSubProtocol(protocol)); } - ctx.getChannel().write(res); + channel.write(res); // Upgrade the connection and send the handshake response. - ChannelPipeline p = ctx.getChannel().getPipeline(); - p.remove("aggregator"); - p.replace("decoder", "wsdecoder", new WebSocket08FrameDecoder(true, this.allowExtensions)); - p.replace("encoder", "wsencoder", new WebSocket08FrameEncoder(false)); + ChannelPipeline p = channel.getPipeline(); + p.remove(HttpChunkAggregator.class); + p.replace(HttpRequestDecoder.class, "wsdecoder", new WebSocket08FrameDecoder(true, this.allowExtensions)); + p.replace(HttpResponseEncoder.class, "wsencoder", new WebSocket08FrameEncoder(false)); } /** * Echo back the closing frame and close the connection - * - * @param ctx - * Channel context + * + * @param channel + * Channel * @param frame * Web Socket frame that was received */ @Override - public void performClosingHandshake(ChannelHandlerContext ctx, CloseWebSocketFrame frame) { - ChannelFuture f = ctx.getChannel().write(frame); + public void performClosingHandshake(Channel channel, CloseWebSocketFrame frame) { + ChannelFuture f = channel.write(frame); f.addListener(ChannelFutureListener.CLOSE); } diff --git a/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker17.java b/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker17.java index 68d82bf40a..45383cbe09 100644 --- a/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker17.java +++ b/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshaker17.java @@ -20,13 +20,16 @@ import static io.netty.handler.codec.http.HttpVersion.HTTP_1_1; import java.security.NoSuchAlgorithmException; +import io.netty.channel.Channel; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelFutureListener; -import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelPipeline; +import io.netty.handler.codec.http.HttpChunkAggregator; import io.netty.handler.codec.http.DefaultHttpResponse; import io.netty.handler.codec.http.HttpRequest; +import io.netty.handler.codec.http.HttpRequestDecoder; import io.netty.handler.codec.http.HttpResponse; +import io.netty.handler.codec.http.HttpResponseEncoder; import io.netty.handler.codec.http.HttpResponseStatus; import io.netty.handler.codec.http.HttpHeaders.Names; import io.netty.logging.InternalLogger; @@ -51,7 +54,7 @@ public class WebSocketServerHandshaker17 extends WebSocketServerHandshaker { /** * Constructor specifying the destination web socket location - * + * * @param webSocketURL * URL for web socket communications. e.g * "ws://myhost.com/mypath". Subsequent web socket frames will be @@ -73,11 +76,11 @@ public class WebSocketServerHandshaker17 extends WebSocketServerHandshaker { * "http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17">HyBi * versions 13-17. Versions 13-17 share the same wire protocol. *

- * + * *

* Browser request to the server: *

- * + * *
      * GET /chat HTTP/1.1
      * Host: server.example.com
@@ -88,11 +91,11 @@ public class WebSocketServerHandshaker17 extends WebSocketServerHandshaker {
      * Sec-WebSocket-Protocol: chat, superchat
      * Sec-WebSocket-Version: 13
      * 
- * + * *

* Server response: *

- * + * *
      * HTTP/1.1 101 Switching Protocols
      * Upgrade: websocket
@@ -100,18 +103,18 @@ public class WebSocketServerHandshaker17 extends WebSocketServerHandshaker {
      * Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
      * Sec-WebSocket-Protocol: chat
      * 
- * - * @param ctx - * Channel context + * + * @param channel + * Channel * @param req * HTTP request * @throws NoSuchAlgorithmException */ @Override - public void performOpeningHandshake(ChannelHandlerContext ctx, HttpRequest req) { + public void performOpeningHandshake(Channel channel, HttpRequest req) { if (logger.isDebugEnabled()) { - logger.debug(String.format("Channel %s web socket spec version 17 handshake", ctx.getChannel().getId())); + logger.debug(String.format("Channel %s web socket spec version 17 handshake", channel.getId())); } HttpResponse res = new DefaultHttpResponse(HTTP_1_1, new HttpResponseStatus(101, "Switching Protocols")); @@ -139,27 +142,27 @@ public class WebSocketServerHandshaker17 extends WebSocketServerHandshaker { res.addHeader(Names.SEC_WEBSOCKET_PROTOCOL, this.selectSubProtocol(protocol)); } - ctx.getChannel().write(res); + channel.write(res); // Upgrade the connection and send the handshake response. - ChannelPipeline p = ctx.getChannel().getPipeline(); - p.remove("aggregator"); - p.replace("decoder", "wsdecoder", new WebSocket13FrameDecoder(true, this.allowExtensions)); - p.replace("encoder", "wsencoder", new WebSocket13FrameEncoder(false)); + ChannelPipeline p = channel.getPipeline(); + p.remove(HttpChunkAggregator.class); + p.replace(HttpRequestDecoder.class, "wsdecoder", new WebSocket13FrameDecoder(true, this.allowExtensions)); + p.replace(HttpResponseEncoder.class, "wsencoder", new WebSocket13FrameEncoder(false)); } /** * Echo back the closing frame and close the connection - * - * @param ctx - * Channel context + * + * @param channel + * Channel * @param frame * Web Socket frame that was received */ @Override - public void performClosingHandshake(ChannelHandlerContext ctx, CloseWebSocketFrame frame) { - ChannelFuture f = ctx.getChannel().write(frame); + public void performClosingHandshake(Channel channel, CloseWebSocketFrame frame) { + ChannelFuture f = channel.write(frame); f.addListener(ChannelFutureListener.CLOSE); } diff --git a/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshakerFactory.java b/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshakerFactory.java index 899408d653..de9aef2d69 100644 --- a/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshakerFactory.java +++ b/src/main/java/io/netty/handler/codec/http/websocketx/WebSocketServerHandshakerFactory.java @@ -15,7 +15,7 @@ */ package io.netty.handler.codec.http.websocketx; -import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.Channel; import io.netty.handler.codec.http.DefaultHttpResponse; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.HttpResponse; @@ -36,7 +36,7 @@ public class WebSocketServerHandshakerFactory { /** * Constructor specifying the destination web socket location - * + * * @param webSocketURL * URL for web socket communications. e.g * "ws://myhost.com/mypath". Subsequent web socket frames will be @@ -56,11 +56,11 @@ public class WebSocketServerHandshakerFactory { /** * Instances a new handshaker - * + * * @return A new WebSocketServerHandshaker for the requested web socket * version. Null if web socket version is not supported. */ - public WebSocketServerHandshaker newHandshaker(ChannelHandlerContext ctx, HttpRequest req) { + public WebSocketServerHandshaker newHandshaker(HttpRequest req) { String version = req.getHeader(Names.SEC_WEBSOCKET_VERSION); if (version != null) { @@ -83,16 +83,16 @@ public class WebSocketServerHandshakerFactory { /** * Return that we need cannot not support the web socket version - * - * @param ctx - * Context + * + * @param channel + * Channel */ - public void sendUnsupportedWebSocketVersionResponse(ChannelHandlerContext ctx) { + public void sendUnsupportedWebSocketVersionResponse(Channel channel) { HttpResponse res = new DefaultHttpResponse(HttpVersion.HTTP_1_1, new HttpResponseStatus(101, "Switching Protocols")); res.setStatus(HttpResponseStatus.UPGRADE_REQUIRED); res.setHeader(Names.SEC_WEBSOCKET_VERSION, "13"); - ctx.getChannel().write(res); + channel.write(res); } }