MQTT---HiveMQ源码详解(八)Netty-WebSocket

    xiaoxiao2021-03-25  85

    源博客地址:http://blog.csdn.net/pipinet123


    MQTT交流群:221405150


    基于netty实现Webscoket相对来说就是相当简单,所以本讲中就不搞太复杂的了,给大家看一个类图,和一段给pipeline添加handler,就可以完全了解hivemq如何处理的了,其实跟几乎所有需要使用netty去支持websocket的处理一致。


    public class WebsocketTransportChannelInitializer { public static final int MAX_CONTENT_LENGTH = 65536; private final WebsocketListener listener; public WebsocketTransportChannelInitializer(WebsocketListener listener) { this.listener = listener; } public void initChannel(Channel channel) { //添加http协议编码/解码 channel.pipeline().addBefore(Pipelines.ALL_CHANNEL_GROUP_HANDLER, Pipelines.HTTP_SERVER_CODEC, new HttpServerCodec()); //添加HttpRequest消息聚合器 channel.pipeline().addAfter(Pipelines.HTTP_SERVER_CODEC, Pipelines.HTTP_OBJECT_AGGREGATOR, new HttpObjectAggregator(MAX_CONTENT_LENGTH)); //添加WebSocketServerProtocolHandler String path = this.listener.getPath(); String subProtocols = getSubProtocols(); boolean allowExtensions = this.listener.getAllowExtensions(); channel.pipeline().addAfter(Pipelines.HTTP_OBJECT_AGGREGATOR, Pipelines.WEBSOCKET_SERVER_PROTOCOL_HANDLER, new WebSocketServerProtocolHandler(path, subProtocols, allowExtensions, Integer.MAX_VALUE)); //添加Websocket字节码Handler channel.pipeline().addAfter(Pipelines.WEBSOCKET_SERVER_PROTOCOL_HANDLER, Pipelines.WEBSOCKET_BINARY_FRAME_HANDLER, new WebsocketBinaryFrameHandler()); //添加websocket帧类型handler channel.pipeline().addAfter(Pipelines.WEBSOCKET_BINARY_FRAME_HANDLER, Pipelines.WEBSOCKET_CONTINUATION_FRAME_HANDLER, new WebsocketContinuationFrameHandler()); //添加websocket文本handler channel.pipeline().addAfter(Pipelines.WEBSOCKET_BINARY_FRAME_HANDLER, Pipelines.WEBSOCKET_TEXT_FRAME_HANDLER, new WebsocketTextFrameHandler()); //添加mqtt message转换成websocket channel.pipeline().addAfter(Pipelines.WEBSOCKET_TEXT_FRAME_HANDLER, Pipelines.MQTT_WEBSOCKET_ENCODER, new MqttWebsocketEncoder()); } @VisibleForTesting String getSubProtocols() { return Joiner.on(",").join(this.listener.getSubprotocols()); } }
    转载请注明原文地址: https://ju.6miu.com/read-19534.html

    最新回复(0)