起因:
1.想让Netouter硬件及时接收外网服务器命令;
2.向外网发送节点的信息
3.web实时显示获取到的信息
技术实现:
http定时查询
tcp长连接
mqtt协议,不许要自己实现tcp长连接部分,且可以集群以及并发量大
网络拓扑
Netouter (推送 订阅) mqtt协议端口 服务器 websocket 协议端口 websocket----js--mqtt--页面
实现过程
1.熟悉mqtt 使用公网开源服务器测试
2.自己编译安装 搭建环境
对于1.4.5以上mosqito 支持websocket
下载地址:http://mosquitto.org/download/
mosquitto.c:47: fatal error: libwebsockets.h: No such file or directory
貌似还有个叫libwebsocket
https://github.com/warmcat/libwebsockets
cmake ;make ;make install
修改编译规则文件config.mk
# Build with websockets support on the broker.
WITH_WEBSOCKETS:=yes
配置文件:
listener 8001
protocol websockets
root@ubuntu:/home/sdb/mqtt/mosquitto-1.4.9# mosquitto -c mosquitto.conf
1468223029: mosquitto version 1.4.9 (build date 2016-07-11 00:32:36-0700) starting
1468223029: Config loaded from mosquitto.conf.
1468223029: Opening websockets listen socket on port 8001.
1468223029: Opening ipv4 listen socket on port 1883.
1468223029: Opening ipv6 listen socket on port 1883.
3.页面编写
指定以上配置文件重启Mosquitto服务之后,便可以通过任意MQTT over WebSockets的界面,比如HiveMQ WebSockets Client Showcase或者MQTT Client Sample来把玩了:
测试客户端
https://eclipse.org/paho/clients/js/utility/
http://www.hivemq.com/demos/websocket-client/
测试服务:
iot.eclipse.org 80
以上资料来自:http://dataguild.org/?p=6846
未完待续。。。。