websocket连接mqtt实现发布及订阅主题
2019独角兽企业重金招聘Python工程师标准>>>
环境:linux(ubuntu、Centos7),websocket,mosquitto-1.4.10,libwebsockets-master
说明:如果安装过程中出现问题,请看六中的解决办法。可能会解决你遇到的问题。
一、安装相应的功能libwebsockets
1.下载libwebsockets,下载地址https://libwebsockets.org/
2.解压,我下载的是zip的,利用xftp上传到服务器上面的。
3.进入目录 cd libwebsockets-master
4.创建一个build文件夹 mkdir build
5.进入build cd build
6.安装如果希望使用64位库文件,添加参数如下cmake .. -DLIB_SUFFIX=64
7.编译make
8. 安装make install
二、安装mqtt服务器
1.选择对应的版本下载mqtt服务器,下载地址http://mosquitto.org/files/source/
2.解压 tar zxfvmosquitto-1.4.10.tar.gz
3.进入目录 cd mosquitto-1.4.10
4.配置文件 vim config.mk (WITH_WEBSOCKETS:=yes)
5.编译make
6.安装make install
三、配置mqtt服务器
1.找到/etc/mosquitto/mosquitto.conf,如果没有该文件则进入你安装的mosquitto位置执行 cp mosquitto.conf /etc/mosquitto/mosquitto.conf
2.编辑mosquitto.conf vim mosquitto.conf
3.在Default Listenter 添加一下内容
port 1883
listener 19211
protocol websockets
注意:这里19211是websocket连接端口
4.运行 mosquitto -c /etc/mosquitto/mosquitto.conf (这里一定运行这个,不然websocket连接不上mqtt服务器。)
四、测试mqtt服务器
1.启动mqtt服务器 mosquitto -v
2.订阅主题 mosquitto_sub -v -t 主题名
3.发布消息 mosquitto_pub -t 主题名 -m 消息内容
如果订阅主题的客户端收到发布的消息,则说明成功。
五、websocket连接mqtt服务器 jsAPI文档: https://www.eclipse.org/paho/clients/js/
1.引入<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.js" type="text/javascript"></script>
2. // 创建client
client = new Paho.MQTT.Client(location.hostname, Number(location.port), "clientId");
// 设置回调
client.onConnectionLost = onConnectionLost;
client.onMessageArrived = onMessageArrived;
// 连接mqtt服务器
client.connect({onSuccess:onConnect});
//回调方法
function onConnect() {
console.log("onConnect");
//订阅主图
client.subscribe("World");
//发布消息
message = new Paho.MQTT.Message("Hello");
message.destinationName = "World";
client.send(message);
}
// 连接失败的回调
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
console.log("onConnectionLost:"+responseObject.errorMessage);
}
}
// 接收到消息的回调
function onMessageArrived(message) {
console.log("onMessageArrived:"+message.payloadString);
}
六、遇到的问题
1.编译找不到cmake
解决办法:安装cmake
sudo apt-get install libssl-dev
2.error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
解决办法:
# 创建链接
sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
# 更新动态链接库
sudo ldconfig
3.编译找不到openssl/ssl.h
解决办法:安装openssl
sudo apt-get install libssl-dev
4.编译过程找不到ares.h
解决办法:sudo apt-get install libc-ares-dev
5.编译过程找不到uuid/uuid.h
sudo apt-get install uuid-dev
6.最后启动了,就是远程连接不上,考虑是防火墙的问题
关闭防火墙systemctl stop firewalld.service
具体的解决办法我猜测应该是配置防火墙,配置开放端口,而不是关闭防火墙,这个方法我还没来的及验证。
7.error while loading shared libraries: libwebsockets.so.9: cannot open shared object file: No such file or directory
解决办法:sudo ln -s /usr/local/lib64/libwebsockets.so.9 /usr/lib/libwebsockets.so.9
sudo ldconfig
8.websocket连接报错Failed to connect: AMQJS0007E Socket error:undefined.
如果配置的websocket正常启动成功,问题可能出现在SSL上面。
解决方法:关闭ssl的支持
卸载mqtt:make uninstall
配置config.mk WITH_TLS:=no WITH_TLS_PSK:=no
安装 make install
转载于:https://my.oschina.net/lwenhao/blog/1518373
websocket连接mqtt实现发布及订阅主题相关推荐
- 学习如何使用电脑客户端和ESP8266客户端来连接MQTT服务端以及订阅主题发送主题操作
MQTT原理与应用 学习如何使用电脑客户端和ESP8266客户端来连接MQTT服务端 本文章学习借鉴于太极创客团队,以表感谢.官网[http://www.taichi-maker.com/] 文章目录 ...
- mqtt server python_使用python实现mqtt的发布和订阅
需要安装的python库 使用python编写程序进行测试MQTT的发布和订阅功能.首先要安装:pip install paho-mqtt 测试发布(pub) 我的MQTT部署在阿里云的服务器上面,所 ...
- 前端websocket连接mqtt服务器(Paho-mqtt,mqttws31.js)以及断开重连
项目需求,java端连接C#,想在前台处理订阅消息,用了websocket和mqtt,查了一上午,因为本机没有node.js,关于paho-mqtt.js的例子连接不了,比如301错误码.什么二进制数 ...
- 使用 WebSocket 连接 MQTT 服务器
近年来随着 Web 前端的快速发展,浏览器新特性层出不穷,越来越多的应用可以在浏览器端通过浏览器渲染引擎实现,Web 应用的即时通信方式 WebSocket 也因此得到了广泛的应用. WebSocke ...
- ROS1中使用Python发布和订阅主题
ROS是开发机器人应用的极具生产力的工具,最常用于概念开发.算法验证.在算法开发工具中,Python是一个极佳的选择,因为Python的工具包十分丰富,脚本语言的特性也使得无需编译,算法修改方便. 本 ...
- ESP32的MQTT AT固件烧录+STM32以ESP32的MQTT AT固件的AT指令连接EMQX下mqtt服务器实现消息订阅和发布
目录 写在前面 三种方案(利用ESP32连接EMQX下的MQTT) 步骤 ESP32烧录固件并AT指令进行测试. 下载固件 烧录工具下载 烧录固件(选择ESP32) 关于AT 指令与MQTT服务器断开 ...
- mqtt(2)发布、订阅、订阅确定、取消订阅
PUBLISH – 发布消息 packetId – 报文标识符 不同的MQTT报文所拥有的标识符不同 topicName – 主题名 QoS – 服务质量等级 retainFlag – 保留标志 ...
- 移远EC200 EC20 EC600 EC800连接MQTT服务器
前言 移远的CAT1模块EC200S连接MQTT大致流程 ,经过测试,完全有效 A:开机 就是对模块进行断电2S在上电. B:基础配置 这部分跟连TCP服务器一样 (1):发送AT,确认模块是否正常 ...
- spring-integration连接MQTT
MQTT一种物联网数据传输协议,构建在TCP之上,采用发布与订阅的模式进行数据交互,发布与订阅是两个独立的连接通道,这里采用spring-integration-mqt来实现发布与订阅MQTT,与直接 ...
最新文章
- POJ 1001(高精度乘法 java的2种解法)
- Vue.Draggable 实现组件拖拽
- 【常见问题】Can not perform this action after onSaveInstanceState
- python ffmpeg pyav
- 【学习笔记】springboot的AutoConfigurationImportSelector 、@EnableAutoConfiguraion和@import解析
- flink的table/sql api的多种写法汇总
- 杭州高职单招计算机试题,河北省高职单招职业技能练习题20
- php phpmailer qq邮箱,QQ邮箱利用PHPmailer发送邮件
- 这是一张超级长长长长的长图·····
- SpringBoot 上传文件(单个、多个文件)
- 表面上承认错误_做一个可以承认错误的领导者
- elk如何同步到es 方案靠谱吗_架构设计:微服务架构如何划分?这6个标准原则让你一目了然...
- 前端大屏幕项目的一点思考
- Sql Server之旅——第二站 理解万恶的表扫描
- 向量叉积和点积混合运算_向量点积叉积及其几何意义
- 【云原生】SpringCloud系列之服务调用OpenFeign(基本概念和使用步骤)
- perfmon 端口修改_Windows操作统的性能监控工具――Perfmon.doc
- com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException UNAVAILABLE io exception
- [最新] Android 代码规范大全(Android开发速看),2021年最新大厂Android面试笔试题目
- 【隐式图搜索遍历学习】倒牛奶
热门文章
- JS中IE与W3C不同的地方
- CentOS 6.5 使用docker 容器
- DataList中的按钮触发事件的方法的实现
- 2月07日云栖精选夜读:观点 | 阿里云 MVP 唐俊飞:安全性可以认为是一种能力...
- NetScaler的部署实验之二NetScaler的传输环路值的设定
- Android热补丁技术—dexposed原理简析(手机淘宝采用方案)
- Java 并发编程中使用 ReentrantLock 替代 synchronized 关键字原语
- 【DeepLearning】Exercise:Sparse Autoencoder
- VC编写自己构造http协议数据的post上传图片类(MFC环境 带编码转换)(转)
- 空类,虚函数类,虚继承类的空间大小