【开源物联网】基于WebSocket进行MQTT通信

1、概述

MQTT是物联网主流通信协议,但是很多终端天然不具备Mqtt通信能力,比如Web H5、小程序等终端形式,这些终端提供更底层的WebSocket通信方式。因此,研究基于WebSocket进行Mqtt通信是非常普遍的需求。

2、基于WebSocket进行MQTT通信

2.1通信框架

基于WebSocket进行MQTT通信框架代码如下:

public void startup() {
		mainGroup = new NioEventLoopGroup();
		subGroup = new NioEventLoopGroup();
		try {
			ServerBootstrap server = new ServerBootstrap();
			// 绑定两个线程组
			server.group(mainGroup, subGroup)
					// 指定NIO的模式
					.channel(NioServerSocketChannel.class)
					// 子处理器,用于处理workerGroup
					.childHandler(new ChannelInitializer<SocketChannel>() {
						@Override
						protected void initChannel(SocketChannel ch) throws Exception {
							ChannelPipeline pipeline = ch.pipeline();

							ch.pipeline().addLast("logging", new LoggingHandler("DEBUG"));// 设置log监听器,并且日志级别为debug,方便观察运行流程

							// websocket 基于http协议,所以要有http编解码器 服务端用HttpServerCodec
							pipeline.addLast(new HttpServerCodec());
							// 对写大数据流的支持
							pipeline.addLast(new ChunkedWriteHandler());

							/**
							 * 我们通常接收到的是一个http片段,如果要想完整接受一次请求的所有数据,我们需要绑定HttpObjectAggregator,然后我们
							 * 就可以收到一个FullHttpRequest-是一个完整的请求信息。
							 * 对httpMessage进行聚合,聚合成FullHttpRequest或FullHttpResponse
							 * 几乎在netty
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值