首先要清楚心跳消息是一种控制消息类型(control message),而不是访问消息类型(access message),它在两个节点之间上层传输层之间传输,为了能够让两个节点之间发送心跳消息,必须首先对每个节点的心跳状态进行配置,共有6个相关消息,在配置模块客户端和服务器之间通信,完成节点的心跳状态的配置
Config Heartbeat Publication Set
Config Heartbeat Publication Get
Config Heartbeat Publication Status
Config Heartbeat Subscription Set
Config Heartbeat Subscription Get
Config Heartbeat Subscription Status
重点就是,当配置好节点的心态状态之后,心跳消息就在两个节点的上层传输层之间传输,自动的接收和发送心跳消息
不需要应用程序参与,应用程序可以访问心跳的状态获得有用的信息
心跳消息设计的目的之一是让订阅心跳信息的节点知道你离我有多远(hop)
心跳消息中的有效字段
心跳消息包含心跳消息的初始TTL和节点的功能标志位feature
1 订阅节点获得心跳消息后可以根据初始TTL的值计算hop(跳数),在整个消息的订阅时间内
可以获得最大的hop和最小的hop,让订阅节点分析通讯的可靠性,并选择 最佳的发布TTL
2 当节点的relay,proxy,friend,lpn功能因为配置而改变的时候,它会通知监听 的模块,则节点的功能改变的信息
可以通过心跳消息发布出去
总之 ,为什么mesh网络需要心跳?
在mesh1.0中设计心跳机制的本质需求是,当一个网络开始工作了,我们想知道网络中 节点之间传输消息的可靠性
和它们之间的跳数,或整个网络节点构成拓扑,用来优化TTL值,减少网络消息的拥堵
这个功能,就是通过心跳消息完成的