CoAP学习笔记——服务器端繁忙时的处理请求流程

原文链接

更多CoAP文章请参考博文索引——【物联网学习笔记——索引博文

根据前面的文章可以看出,CoAP是一个简单的请求响应机制,对于一个给定的请求便有一个相应的响应。
很多时候,如果服务器不能立即响应一个CON请求,服务器只能返回一个空应答,这个空应答使得客户端停止重传CoAP请求。但是一些时间过去之后,服务器端准备好了上一个CON请求的响应,此时服务器向客户端发送一个CON请求,该CON请求需要客户端确认。在服务器侧,此时发送的CON请求中的Token标记必须和客户端发送给服务器的CON请求中的Token标记完全一致。这也是Token标志和序列号使用不同的地方。
下面是流程的详细描述:
  1. 客户端发送一个CON请求
  2. 此时服务器无法返回。如果服务器无法迅速响应,客户端会重复发送CON请求。为了避免这种情况,服务器会发送一个空应答。
  3. 当客户端收到了一个空应答,而空应答中的消息ID和CON请求中的消息ID相同,那么客户端可以便会理解,服务此时正忙,会在一定时间之后通过CON请求的方式返回内容。
  4. 当服务器准备好数据时便尝试发送给客户端,服务器会构造一个CON请求并复制原先的CON请求中的Token标记
  5. 客户端收到一个来自服务器的CON请求之后返回一个应答,如果客户端不及时返回应答,服务器会认为上一个CON请求丢失并会尝试重新发送CON请求。


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NB-IoT的中文指令集,基于BC95 657 SP2版本翻译的。 —————————————————————— AT 命令 描述 实现的状态 3GPP Commands (27.007) AT+CGMI 查询制造商 ID B350+ AT+CGMM 查询模块型号 B350+ AT+CGMR 查询固件版本 B350+ AT+CGSN 查询模块序列号 B350+ AT+CEREG 查询网络注册状态 B350+ AT+CSCON 查询信号连接状态 B350+ AT+CLAC 列出可用命令 B350+ AT+CSQ 获取信号强度 B350+ AT+CGPADDR 显示 PDP 地址 B350+ AT+COPS 选择接入的网络 B350+ AT+CGATT PS 连接或分离 B350+ AT+CGACT 激活或停用 PDP 上下文 B657SP1+ AT+CIMI 查询国际移动设备身份码 B350+ AT+CGDCONT 定义一个 PDP 上下文 B350+ AT+CFUN 设置终功能 B350+ AT+CMEE 报告移动终错误 B600+ AT+CCLK 返回当前日期和间 B656+ AT+CPSMS 省电模式设置 B657SP1+ AT+CEDRXS eDRX 设置 B657SP1+ AT+CEER 扩展错误报告 B657SP1+ AT+CEDRXRDP eDRX 阅读动态参数 B657SP1+ AT+CTZR 区报告 B657SP1+ ETSI Commands(正在开发中) AT+CSMS 选择短消息服务 B657SP1+ AT+CNMA 模块消息提醒 B657SP1+ AT+CSCA 服务中心地址 B657SP1+ AT+CMGS 发送短消息 B657SP1+ AT+CMGC 发送短信命令 B657SP1+ AT+CSODCP 通过控制层发送原始数据 B657SP1+ AT+CRTDCP 通过控制层传送终数据 B657SP1+ General Commands 通用命令 AT+NMGS 发送消息到 CDP 服务器 B350+ AT+NMGR 接收 CDP 服务器消息 B350+ AT+NNMI 接收消息标志 B350+ AT+NSMI 发送消息的标志 B350+ AT+NQMGR 查询接收到的消息量 B350+ AT+NQMGS 查询发送的消息量 B350+ AT+NMSTATUS 信息注册状态 B657SP1+ AT+NRB 模块重启 B350+ AT+NCDP 配置和查询 CDP 服务器设置 B350+ AT+NUESTATS 获取的操作统计 B350+ AT+NEARFCN 指定搜素频率 B350+ AT+NSOCR 创建 Socket B350+ AT+NSOST 发送数据 B350+ AT+NSOSTF 发送有标记数据 B656+ AT+NSORF 接收命令 B350+ AT+NSOCL 关闭 Socket B350+ +NSONMI 指示 Socket 消息到达(只响应) B350+ AT+NPING 测试 IP 网络连接到远程主机 B350+ AT+NBAND 设置频段 B600+ AT+NLOGLEVEL 设置日志级别 B600+ AT+NCONFIG 配置模块的功能 B650+ AT+NATSPEED 配置 UART 口波特率 B656+ AT+NCCID 卡片识别 B657SP1+ AT+NFWUPD 通过 UART 更新固件 B657SP1+ AT+NRDCTRL 控制无线配置 B657SP1+ AT+NCHIPINFO 读取系统信息 B657SP1+ Temporary Commands 临命令
Nginx可以通过配置反向代理实现转发CoAP请求到后CoAP服务器。下面是一个简单的Nginx配置示例: ``` worker_processes 1; events { worker_connections 1024; } http { upstream coap_servers { server 192.168.1.100:5683; server 192.168.1.101:5683; server 192.168.1.102:5683; } server { listen 5683 udp; server_name coap.example.com; location / { proxy_pass coap://coap_servers; } } } ``` 上述配置中,`upstream`指令定义了一个名为`coap_servers`的服务器集群,其中包含了3个CoAP服务器的地址和口。`server`指令定义了一个监听`5683`口的UDP服务器,并且指定了`server_name`为`coap.example.com`。`location`指令定义了请求的转发规则,将请求转发到`coap_servers`集群上。 需要注意的是,Nginx只能转发TCP和UDP协议的请求,而CoAP是基于UDP协议的,因此需要将Nginx的监听口设置为UDP,并且需要在`proxy_pass`指令中使用`coap://`协议前缀,表示将请求转发给CoAP服务器。 此外,还需要对CoAP服务器进行负载均衡,以避免某个服务器负载过重而导致系统出现故障。可以使用Nginx提供的负载均衡算法,如轮询、IP哈希等,将请求平均分配到不同的服务器上。例如,使用`ip_hash`算法可以将同一IP的请求转发到同一个CoAP服务器上,以保证会话的一致性。 ``` upstream coap_servers { ip_hash; server 192.168.1.100:5683; server 192.168.1.101:5683; server 192.168.1.102:5683; } ``` 以上是一个简单的Nginx反向代理CoAP服务器的配置示例,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值