好的,我找到了问题的解决方案。
Channel
在里面
handler source code
您可以看到,它有方法获取
ChannelFuture
public ChannelFuture handshakeFuture() {
return handshakeFuture;
}
现在,收购后
频道
从…起
FixedChannelPool
,我正在调用方法(返回握手是否完成):
private boolean isConnectionReady(Channel ch) {
try {
WebSocketClientHandler handler = (WebSocketClientHandler) ch.pipeline().get("handler");
return handler.handshakeFuture().sync().isSuccess();
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
还为添加了名称
WebSocketClientHandler
channelCreated(Channel ch)
DefaultHttpHeaders httpHeaders = new DefaultHttpHeaders();
final WebSocketClientHandshaker handshaker = WebSocketClientHandshakerFactory.newHandshaker(uri, WebSocketVersion.V13, null, false, httpHeaders, 1280000);
final WebSocketClientHandler handler = new WebSocketClientHandler(handshaker, connection);
ChannelPipeline pipeline = ch.pipeline();
pipeline.addLast(new HttpClientCodec(), new HttpObjectAggregator(65536));
pipeline.addLast("handler", handler);
我知道这段代码现在看起来很糟糕,应该重构。