Merge pull request #115 from ngocdaothanh/master
Use channel instead of context and cleanup unused method argument
This commit is contained in:
commit
e4642f557f
@ -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()));
|
||||
|
@ -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()));
|
||||
|
@ -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()));
|
||||
|
@ -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.
|
||||
|
@ -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</a>.
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Browser request to the server:
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* 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
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Server response:
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* 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-
|
||||
* </pre>
|
||||
*
|
||||
* @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);
|
||||
}
|
||||
}
|
||||
|
@ -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</a>. Version 8, 9 and 10 share the same wire protocol.
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Browser request to the server:
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* 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
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Server response:
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* 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
|
||||
* </pre>
|
||||
*
|
||||
* @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);
|
||||
}
|
||||
|
||||
|
@ -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</a>. Versions 13-17 share the same wire protocol.
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Browser request to the server:
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* 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
|
||||
* </pre>
|
||||
*
|
||||
*
|
||||
* <p>
|
||||
* Server response:
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* <pre>
|
||||
* 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
|
||||
* </pre>
|
||||
*
|
||||
* @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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user