curl http header_HTTP、CoAP发送PUBLISH消息到Coolpy7

针对一些下位机或特殊应用场景中无法使用MQTT客户端情况可使用此功能通过HTTP或CoAP协议推送消息到Coolpy7内核进行消息发布。v7.3.2.6开始支持本功能。

架构

f5d3468fe61d049c7bfba1071404203c.png

HTTP协议发布消息

  • 通过POST方法调用接口
  • 通过Header中添加Basic Auth信息进行用户名、密码提交(与MQTT连接的UserName,PassWord保持一致
  • 通过URL中的Query参数设置MQTT消息参数
  • Coolpy7节点收到请求后保持与原用户身份验证功能调用扩展服务进行用户身份验证,验证成功后消息将发布到MQTT网络中

Basic Auth算法, 以半角":"号组合用户名和密码,然后进行Base64进行编码放到http的header中,header 键为Authorization,值以Basic加一个空格为前缀, 然后并上用户名密码的base64值

例如:Basic amFjb2I6cGFzcw==

CURL使用示例

curl -v -X POST -H "Authorization: Basic c3R1ZGVudDpzdHVkZW50" "Content-Type: application/json" -d '{"id":100}' 'http://localhost:8888/pub?clientid=jacoblai&topic=testtopic/+/a/&qos=0&retain=false'

性能测试 (WRK压测)

wrk -t 16 -c 1000 -d 10s --latency --timeout 5s -s ./post.lua 'http://localhost:8081/pub?clientid=jacoblai&topic=testtopic/a&qos=0&retain=false'Running 10s test @ http://localhost:8081/pub?clientid=jacoblai&topic=testtopic/a&qos=0&retain=false  16 threads and 1000 connections  Thread Stats   Avg      Stdev     Max   +/- Stdev    Latency     8.14ms    3.05ms  45.08ms   65.95%    Req/Sec     4.47k     2.16k   66.48k    89.63%  Latency Distribution     50%    8.93ms     75%   10.11ms     90%   11.79ms     99%   12.90ms  712972 requests in 10.10s, 233.35MB read  Socket errors: connect 0, read 918, write 0, timeout 0  Non-2xx or 3xx responses: 712972Requests/sec:  70569.91Transfer/sec:     23.10MB

post.lua压测提交内容

wrk.method = "POST"wrk.body   = '{"jsonrpc":"2.0","method":"cita_sendTransaction","params":["abcd"],"id":2}'wrk.headers["Content-Type"] = "application/json"

CoAP协议发布消息

  1. 通过SetOption的LocationQuery参数设为Basic Auth身份验证信息
  2. 通过SetOption的URIQuery参数设置publish参数

消息示例

req := coap.Message{Type:      coap.Confirmable,Code:      coap.POST,MessageID: uint16(rand.Intn(max-min) + min),Payload:   []byte(`{"data":"hello mqtt from coap"}`),}req.SetPathString("/pub")req.SetOption(coap.LocationQuery, "Basic amFjb2I6cGFzcw==")req.SetOption(coap.URIQuery, "clientid=jacoblai&topic=testtopic/+/a/#&qos=0&retain=false")

压力测试源代码:

https://github.com/Coolpy7/coolpy7_benchmark/blob/master/test_coap_publish/coap_bench_pub_test.go

性能指标

goos: darwingoarch: amd64BenchmarkPubBenchmarkPub-8      41418     28107 ns/op     633 B/op      10 allocs/opPASS

如果你有兴趣请关注我们,Coolpy7单机千万级MQTT broker服务器技术。

官方网站 http://coolpy.net

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值