@Override
protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
LOG.info("Received msg: {}", msg);
if (!this.handshaker.isHandshakeComplete()) {
this.handshaker.finishHandshake(ctx.channel(), (FullHttpResponse) msg);
LOG.info("Client connected.");
this.connected = true;
this.handshakeFuture.setSuccess();
return;
}
if (msg instanceof FullHttpResponse) {
throw new IllegalStateException("Unexpected response: " + msg.toString());
}
WebSocketFrame frame = (WebSocketFrame) msg;
if (frame instanceof TextWebSocketFrame) {
synchronized (responses) {
responses.add(((TextWebSocketFrame) frame).text().getBytes(StandardCharsets.UTF_8));
}
} else if (frame instanceof BinaryWebSocketFrame) {
ByteBuf buf = frame.content();
byte[] b = new byte[buf.readableBytes()];
buf.readBytes(b);
synchronized (responses) {
responses.add(b);
}
} else if (frame instanceof PingWebSocketFrame) {
LOG.info("Returning pong message");
ctx.writeAndFlush(new PongWebSocketFrame());
} else if (frame instanceof CloseWebSocketFrame) {
LOG.info("Received message from server to close the channel.");
ctx.close();
} else {
LOG.warn("Unhandled frame type received: " + frame.getClass());
}
}
WebSocketIT.java 文件源码
java
阅读 32
收藏 0
点赞 0
评论 0
项目:qonduit
作者:
评论列表
文章目录