分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

MQTT---HiveMQ源代码具体解释(八)Netty-WebSocket

发布时间:2023-09-06 01:43责任编辑:蔡小小关键词:Web源代码
???????????????????????????
???????????????????????

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


MQTT交流群:221405150


?

基于netty实现Webscoket相对来说就是相当简单,所以本讲中就不搞太复杂的了,给大家看一个类图,和一段给pipeline加入handler,就能够全然了解hivemq怎样处理的了,事实上跟差点儿全部须要使用netty去支持websocket的处理一致。


watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGlwaW5ldDEyMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="websocket" title="">

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字节码Handlerchannel.pipeline().addAfter(Pipelines.WEBSOCKET_SERVER_PROTOCOL_HANDLER, Pipelines.WEBSOCKET_BINARY_FRAME_HANDLER, new WebsocketBinaryFrameHandler());//加入websocket帧类型handlerchannel.pipeline().addAfter(Pipelines.WEBSOCKET_BINARY_FRAME_HANDLER, Pipelines.WEBSOCKET_CONTINUATION_FRAME_HANDLER, new WebsocketContinuationFrameHandler());//加入websocket文本handlerchannel.pipeline().addAfter(Pipelines.WEBSOCKET_BINARY_FRAME_HANDLER, Pipelines.WEBSOCKET_TEXT_FRAME_HANDLER, new WebsocketTextFrameHandler());//加入mqtt message转换成websocketchannel.pipeline().addAfter(Pipelines.WEBSOCKET_TEXT_FRAME_HANDLER, Pipelines.MQTT_WEBSOCKET_ENCODER, new MqttWebsocketEncoder()); ???} ???@VisibleForTesting ???String getSubProtocols() { ???????return Joiner.on(",").join(this.listener.getSubprotocols()); ???}}
???????????????
??????????????????????????????????????????????? ???????????????????????????????????
???

MQTT---HiveMQ源代码具体解释(八)Netty-WebSocket

原文地址:https://www.cnblogs.com/zhchoutai/p/8455849.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved