我想ChannelInboundHandler在我的 Micronaut 服務中添加一個自定義,以便我可以SslHandshakeCompletionEvent在嘗試 TLS 握手后收聽生成的內容。
我似乎可以ChannelOutboundHandler通過使用注釋來簡單地添加 a @Singleton,但是當我嘗試對 a 執行相同操作時ChannelInboundHandler,它似乎沒有添加到管道中。
這樣做的正確方法是什么?
編輯
這看起來很有希望:https ://docs.micronaut.io/snapshot/guide/index.html#nettyPipeline
uj5u.com熱心網友回復:
您可以創建 的實作BeanCreatedEventListener<ChannelPipelineCustomizer>,并提供該onCreated方法的實作,例如
@Override
public ChannelPipelineCustomizer onCreated(BeanCreatedEvent<ChannelPipelineCustomizer> event) {
ChannelPipelineCustomizer customizer = event.getBean();
if (!customizer.isServerChannel()) {
customizer.doOnConnect(pipeline -> {
pipeline.addAfter(
ChannelPipelineCustomizer.HANDLER_HTTP_CLIENT_CODEC,
"my-handler",
new MyChannelInboundHandler()
);
return pipeline;
});
}
return customizer;
}
然后,在您的MyChannelInboundHandler類中,實作該userEventTriggered方法并監聽SslHandshakeCompletionEvent.SUCCESS事件。然后,您可以對鏈中某些證書的公鑰等做出一些斷言(如果您正在這樣做HPKP)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/457762.html
