收藏官网首页
查看: 2729|回复: 0

[经验] 第四十六天 SNoti过程描述

55

主题

55

帖子

3651

积分

论坛元老

Rank: 8Rank: 8

积分
3651
跳转到指定楼层
楼主
 楼主| 发表于 2023-11-27 00:08:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
免费使用STM32、APP自动代码生成工具
SNoti是一个基于SSL接口的消息推送服务,通过以下通讯过程实现消息的传递和控制指令的发送:
  • 客户端以Client身份与Gizwits Platform建立SSL连接,客户端无需提供证书,只需要信任服务器证书即可。
  • 客户端发送登录指令完成验证,确保身份合法。
  • 服务端根据设备的product_key和subkey,将消息轮流推送给相同product_key+subkey的多个客户端。不同subkey的客户端也能接收该product下设备的指定类型的消息副本,客户端之间不会相互干扰。当某客户端未返回的ack消息数达到该客户端登录设置的prefetch_count值后,消息将不再继续推送给该客户端,但会发送到其他客户端。如果某客户端断开连接并重新连接,未ack的消息会重新发送到该客户端。
  • 客户端实时接收事件消息,并向服务器发送ack事件消息作为确认回复。这样可以确保消息的可靠传递。
  • 当客户端在一定时间范围内没有向服务器发送任何消息时,需要发送ping心跳请求,服务器会回复pong心跳响应,以维持长连接的稳定性。
  • 客户端可以通过发送远程控制指令来控制设备。SNoti服务在客户端登录时会缓存每个product_key对应的M2M信息,用于向设备发送控制指令。需要注意的是,当产品正式发布后,需要重启SNoti客户端以更新M2M的信息,确保控制指令的准确性和及时性。
    推送工作方式:
    • 相同 product_key + subkey 的多个客户端登录连接,消息轮流推送到各客户端;
    • 相同 product_key,不同 subkey 的客户端都能接收该 product 下设备的指定类型的消息副本,客户端之间不会相互干扰;
    • 当某客户端未返回的 ack 消息数达到该客户端登录设置的 prefetch_count 值后,消息将不在继续推送给该客户端,但会发送到其他客户端;
    • 未返回 ack 的消息,服务端会一直等待不会重发,只有在该客户端断开的情况下,未 ack 的消息会重新发送到连接的客户端;
    • 当所有客户端都断开连接后,后续设备的消息会保存在服务端,等待客户端下次接收。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表