WebSocketClient Class — netty Architecture
Architecture documentation for the WebSocketClient class in WebSocketClient.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 99ab3a42_8f1b_c56b_f8c2_da8682a24465["WebSocketClient"] f664f8d9_f33f_c7c5_e07b_3ca03e168360["WebSocketClient.java"] 99ab3a42_8f1b_c56b_f8c2_da8682a24465 -->|defined in| f664f8d9_f33f_c7c5_e07b_3ca03e168360 4356b4a7_ac28_fc2c_852e_f6eaa958e29f["main()"] 99ab3a42_8f1b_c56b_f8c2_da8682a24465 -->|method| 4356b4a7_ac28_fc2c_852e_f6eaa958e29f
Relationship Graph
Source Code
example/src/main/java/io/netty/example/http/websocketx/client/WebSocketClient.java lines 59–147
public final class WebSocketClient {
static final String URL = System.getProperty("url", "ws://127.0.0.1:8080/websocket");
static final int MAX_CONTENT_LENGTH = 8192;
public static void main(String[] args) throws Exception {
URI uri = new URI(URL);
String scheme = uri.getScheme() == null? "ws" : uri.getScheme();
final String host = uri.getHost() == null? "127.0.0.1" : uri.getHost();
final int port;
if (uri.getPort() == -1) {
if ("ws".equalsIgnoreCase(scheme)) {
port = 80;
} else if ("wss".equalsIgnoreCase(scheme)) {
port = 443;
} else {
port = -1;
}
} else {
port = uri.getPort();
}
if (!"ws".equalsIgnoreCase(scheme) && !"wss".equalsIgnoreCase(scheme)) {
System.err.println("Only WS(S) is supported.");
return;
}
final boolean ssl = "wss".equalsIgnoreCase(scheme);
final SslContext sslCtx;
if (ssl) {
sslCtx = SslContextBuilder.forClient()
.trustManager(InsecureTrustManagerFactory.INSTANCE).build();
} else {
sslCtx = null;
}
EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());
try {
// Connect with V13 (RFC 6455 aka HyBi-17). You can change it to V08 or V00.
// If you change it to V00, ping is not supported and remember to change
// HttpResponseDecoder to WebSocketHttpResponseDecoder in the pipeline.
final WebSocketClientHandler handler =
new WebSocketClientHandler(
WebSocketClientHandshakerFactory.newHandshaker(
uri, WebSocketVersion.V13, null, true, new DefaultHttpHeaders()));
Bootstrap b = new Bootstrap();
b.group(group)
.channel(NioSocketChannel.class)
.handler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel ch) {
ChannelPipeline p = ch.pipeline();
if (sslCtx != null) {
p.addLast(sslCtx.newHandler(ch.alloc(), host, port));
}
p.addLast(
new HttpClientCodec(),
new HttpObjectAggregator(MAX_CONTENT_LENGTH),
new WebSocketClientCompressionHandler(MAX_CONTENT_LENGTH),
handler);
}
});
Channel ch = b.connect(uri.getHost(), port).sync().channel();
handler.handshakeFuture().sync();
BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
while (true) {
String msg = console.readLine();
if (msg == null) {
break;
} else if ("bye".equals(msg.toLowerCase())) {
ch.writeAndFlush(new CloseWebSocketFrame());
ch.closeFuture().sync();
break;
} else if ("ping".equals(msg.toLowerCase())) {
WebSocketFrame frame = new PingWebSocketFrame(Unpooled.wrappedBuffer(new byte[] { 8, 1, 8, 1 }));
ch.writeAndFlush(frame);
} else {
WebSocketFrame frame = new TextWebSocketFrame(msg);
Source
Frequently Asked Questions
What is the WebSocketClient class?
WebSocketClient is a class in the netty codebase, defined in example/src/main/java/io/netty/example/http/websocketx/client/WebSocketClient.java.
Where is WebSocketClient defined?
WebSocketClient is defined in example/src/main/java/io/netty/example/http/websocketx/client/WebSocketClient.java at line 59.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free