物联网通讯协议 iot-modbus V3.2.6 发布


物联网通讯协议 iot-modbus V3.2.6 发布

  • 更新内容

iot-modbus本次发布的V3.2.6版本支持设备上线、掉线、处理业务异常监听处理,请看下面的源码解读。

  • 设备上线监听源码解读

主要是在MiiListenerHandler重写了channelActive方法

@Overridepublic void channelActive(ChannelHandlerContext ctx) throws Exception {Channel channel = ctx.channel();if(!JudgeEmptyUtils.isEmpty(channel.remoteAddress())){String address = channel.remoteAddress().toString().substring(1,channel.remoteAddress().toString().length());ChannelConnectData connectServerData = new ChannelConnectData(this, DeviceConnectEnum.ON_LINE.getKey(), address);if(!JudgeEmptyUtils.isEmpty(connectServerData) && !JudgeEmptyUtils.isEmpty(getApplicationContext)){getApplicationContext.publishEvent(connectServerData);}}}
  • 设备掉线监听源码解读

要是在MiiListenerHandler写了channelInactive方法。​​​​​​​

@Overridepublic void channelInactive(ChannelHandlerContext ctx) throws Exception {Channel channel = ctx.channel();if(!JudgeEmptyUtils.isEmpty(channel.remoteAddress())){String address = channel.remoteAddress().toString().substring(1,channel.remoteAddress().toString().length());ChannelConnectData connectServerData = new ChannelConnectData(this, DeviceConnectEnum.BREAK_OFF.getKey(), address);if(!JudgeEmptyUtils.isEmpty(connectServerData) && !JudgeEmptyUtils.isEmpty(getApplicationContext)){getApplicationContext.publishEvent(connectServerData);}}//连接断开后的最后处理ctx.pipeline().remove(this);ctx.deregister();ctx.close();}
  • 处理业务异常监听源码解读

要是增加了MiiExceptionHandler处理器,并在服务端MiiServer和客户端MiiClient初始化initChannel时添加进入。​​​​​​​

package com.takeoff.iot.modbus.netty.handle;
import com.takeoff.iot.modbus.common.entity.ChannelConnectData;import com.takeoff.iot.modbus.common.enums.DeviceConnectEnum;import com.takeoff.iot.modbus.common.utils.JudgeEmptyUtils;import com.takeoff.iot.modbus.common.utils.SpringContextUtil;import org.springframework.context.ApplicationContext;
import io.netty.channel.Channel;import io.netty.channel.ChannelDuplexHandler;import io.netty.channel.ChannelHandlerContext;import lombok.extern.slf4j.Slf4j;
@Slf4jpublic class MiiExceptionHandler extends ChannelDuplexHandler {private ApplicationContext getApplicationContext = SpringContextUtil.applicationContext;public MiiExceptionHandler(){}
@Overridepublic void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { Channel channel = ctx.channel();if(!JudgeEmptyUtils.isEmpty(channel.remoteAddress())){String address = channel.remoteAddress().toString().substring(1,channel.remoteAddress().toString().length());ChannelConnectData connectServerData = new ChannelConnectData(this, DeviceConnectEnum.ABNORMAL.getKey(), address);if(!JudgeEmptyUtils.isEmpty(connectServerData) && !JudgeEmptyUtils.isEmpty(getApplicationContext)){getApplicationContext.publishEvent(connectServerData);}//由Tail节点对异常进行统一处理if(cause instanceof RuntimeException){log.info("处理业务异常:"+channel.remoteAddress());}super.exceptionCaught(ctx, cause);}}}

  • 连接监听器源码解读

主要通过spring的发布时间监听来处理,增加连接监听器ChannelConnectListener。​​​​​​​

package com.takeoff.iot.modbus.test.listener;
import com.takeoff.iot.modbus.common.entity.ChannelConnectData;import com.takeoff.iot.modbus.common.utils.JudgeEmptyUtils;import org.springframework.context.event.EventListener;import org.springframework.stereotype.Component;
import lombok.extern.slf4j.Slf4j;
@Slf4j@Componentpublic class ChannelConnectListener {
@EventListenerpublic void handleReceiveDataEvent(ChannelConnectData data) {if(JudgeEmptyUtils.isEmpty(data.getDeviceConnect())){log.info("设备连接状态码:"+data.getDeviceConnect()+" ---> "+data.getConnectMsg());}}}

 


相關推薦

2023-01-11

近日,Shifu物联网开发社区签署openKylin社区CLA(Contributor License Agreement 贡献者许可协议),正式加入openKylin开源社区。 Shifu是开源的物联网应用开发及管理平台,Shifu物联网开发社区为用户提供全场景设备托管与一体化软件

2024-07-25

和语义消息流的网络应用协议。在微服务、移动应用、物联网等场景,可替代 http、websocket 等。协议详情参考《官网介绍》。 支持: tcp, udp, ws, kcp 传输。 目前:java,kotlin,javascript,node.js,python,android 语言环境可用。g

2024-03-05

性能通用通讯服务悟空 IM,支持即时通讯,消息推送,物联网通讯,音视频信令,直播弹幕,客服系统,AI 通讯,即时社区等场景。 特点 📚 完全自研:自研消息数据库,消息分区永久存储,自研二进制协议 (支持自定义),

2023-04-24

1、smart-mqtt 简介 smart-mqtt,是smartboot组织下面向物联网的首款解决方案,它使用Java语言开发,提供高效、可靠的MQTT Broker服务。 smart-mqtt的独特优势在于大量设备接入的情况下,仍能保持低延迟和高吞吐量,满足物联网领域严苛

2024-05-12

讯服务,支持即时通讯,站内/系统消息,消息中台,物联网通讯,音视频信令,直播弹幕,客服系统,AI通讯,即时社区等场景。 特点 📚 完全自研:自研消息数据库,消息分区永久存储,自研二进制协议(支持自定义),重

2023-07-18

性能通用通讯服务悟空IM,支持即时通讯,消息推送,物联网通讯,音视频信令,直播弹幕,客服系统,AI通讯,即时社区等场景。 特点 📚 完全自研:自研消息数据库,消息分区永久存储,自研二进制协议(支持自定义),重

2024-03-27

讯服务,支持即时通讯,站内/系统消息,消息中台,物联网通讯,音视频信令,直播弹幕,客服系统,AI通讯,即时社区等场景 特点 📚 完全自研:自研消息数据库,消息分区永久存储,自研二进制协议(支持自定义),重写G

2024-09-26

讯服务,支持即时通讯,站内 / 系统消息,消息中台,物联网通讯,音视频信令,直播弹幕,客服系统,AI 通讯,即时社区等场景。 🎦独特性 群成员无上限,轻松支持 10 万人群聊,消息可永久存储。 📚资源消耗低 自研二

2022-10-21

与规则引擎脚本,总共五类“拿来主义”的部分,使得物联网项目开发速度,预增10倍。 协议纷繁复杂怎么办? 物联网的协议多大几十种,除了常见的MQTT、Modbus、Lwm2m等之外,还有各种形式多样的国标、企标协议,包括一些

2024-08-07

关于 BudIoT BUDIOT 是一个开源的、企业级的物联网平台,它集成了设备管理、协议解析、消息订阅、场景联动等一系列物联网核心能力,支持以平台适配设备的方式连接海量设备,支持在线下发指令实现远程控制,支持扩展水电

2024-07-25

一个轻量级的网络编程框架,适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景。 文档与日志 ioGame javadoc api 框架版本更新日志 (yuque.com) ioGame 网络游戏服务器框架 (yuque.com) 版本更新汇总 [extern

2024-08-09

一个轻量级的网络编程框架,适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景。 文档与日志 ioGame javadoc api 框架版本更新日志 (yuque.com) ioGame 真.轻量级网络编程框架 - 在线文档 ioGame 发版本的频

2024-07-09

一个轻量级的网络编程框架,适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景。 文档与日志 ioGame javadoc api 框架版本更新日志 (yuque.com) ioGame 网络游戏服务器框架 (yuque.com) 版本更新汇总 [light-game

2023-08-31

pi文档工具 t-io订阅树:略 TiOMQ OS:用t-io打造的物联网操作系统 TiOMQ Platform:用t-io打造的物联网开放平台 TiOMQ Client: https://www.oschina.net/news/228272/tiomq-client-1-0-8-released 谭聊:用t-io打造的即时通讯系统,核心功能