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实现发布及订阅主题相关推荐

  1. 学习如何使用电脑客户端和ESP8266客户端来连接MQTT服务端以及订阅主题发送主题操作

    MQTT原理与应用 学习如何使用电脑客户端和ESP8266客户端来连接MQTT服务端 本文章学习借鉴于太极创客团队,以表感谢.官网[http://www.taichi-maker.com/] 文章目录 ...

  2. mqtt server python_使用python实现mqtt的发布和订阅

    需要安装的python库 使用python编写程序进行测试MQTT的发布和订阅功能.首先要安装:pip install paho-mqtt 测试发布(pub) 我的MQTT部署在阿里云的服务器上面,所 ...

  3. 前端websocket连接mqtt服务器(Paho-mqtt,mqttws31.js)以及断开重连

    项目需求,java端连接C#,想在前台处理订阅消息,用了websocket和mqtt,查了一上午,因为本机没有node.js,关于paho-mqtt.js的例子连接不了,比如301错误码.什么二进制数 ...

  4. 使用 WebSocket 连接 MQTT 服务器

    近年来随着 Web 前端的快速发展,浏览器新特性层出不穷,越来越多的应用可以在浏览器端通过浏览器渲染引擎实现,Web 应用的即时通信方式 WebSocket 也因此得到了广泛的应用. WebSocke ...

  5. ROS1中使用Python发布和订阅主题

    ROS是开发机器人应用的极具生产力的工具,最常用于概念开发.算法验证.在算法开发工具中,Python是一个极佳的选择,因为Python的工具包十分丰富,脚本语言的特性也使得无需编译,算法修改方便. 本 ...

  6. ESP32的MQTT AT固件烧录+STM32以ESP32的MQTT AT固件的AT指令连接EMQX下mqtt服务器实现消息订阅和发布

    目录 写在前面 三种方案(利用ESP32连接EMQX下的MQTT) 步骤 ESP32烧录固件并AT指令进行测试. 下载固件 烧录工具下载 烧录固件(选择ESP32) 关于AT 指令与MQTT服务器断开 ...

  7. mqtt(2)发布、订阅、订阅确定、取消订阅

    PUBLISH – 发布消息 packetId – 报文标识符   不同的MQTT报文所拥有的标识符不同 topicName – 主题名 QoS – 服务质量等级 retainFlag – 保留标志  ...

  8. 移远EC200 EC20 EC600 EC800连接MQTT服务器

    前言 移远的CAT1模块EC200S连接MQTT大致流程 ,经过测试,完全有效 A:开机 就是对模块进行断电2S在上电. B:基础配置 这部分跟连TCP服务器一样 (1):发送AT,确认模块是否正常 ...

  9. spring-integration连接MQTT

    MQTT一种物联网数据传输协议,构建在TCP之上,采用发布与订阅的模式进行数据交互,发布与订阅是两个独立的连接通道,这里采用spring-integration-mqt来实现发布与订阅MQTT,与直接 ...

最新文章

  1. POJ 1001(高精度乘法 java的2种解法)
  2. Vue.Draggable 实现组件拖拽
  3. 【常见问题】Can not perform this action after onSaveInstanceState
  4. python ffmpeg pyav
  5. 【学习笔记】springboot的AutoConfigurationImportSelector 、@EnableAutoConfiguraion和@import解析
  6. flink的table/sql api的多种写法汇总
  7. 杭州高职单招计算机试题,河北省高职单招职业技能练习题20
  8. php phpmailer qq邮箱,QQ邮箱利用PHPmailer发送邮件
  9. 这是一张超级长长长长的长图·····
  10. SpringBoot 上传文件(单个、多个文件)
  11. 表面上承认错误_做一个可以承认错误的领导者
  12. elk如何同步到es 方案靠谱吗_架构设计:微服务架构如何划分?这6个标准原则让你一目了然...
  13. 前端大屏幕项目的一点思考
  14. Sql Server之旅——第二站 理解万恶的表扫描
  15. 向量叉积和点积混合运算_向量点积叉积及其几何意义
  16. 【云原生】SpringCloud系列之服务调用OpenFeign(基本概念和使用步骤)
  17. perfmon 端口修改_Windows操作统的性能监控工具――Perfmon.doc
  18. com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException UNAVAILABLE io exception
  19. [最新] Android 代码规范大全(Android开发速看),2021年最新大厂Android面试笔试题目
  20. 【隐式图搜索遍历学习】倒牛奶

热门文章

  1. JS中IE与W3C不同的地方
  2. CentOS 6.5 使用docker 容器
  3. DataList中的按钮触发事件的方法的实现
  4. 2月07日云栖精选夜读:观点 | 阿里云 MVP 唐俊飞:安全性可以认为是一种能力...
  5. NetScaler的部署实验之二NetScaler的传输环路值的设定
  6. Android热补丁技术—dexposed原理简析(手机淘宝采用方案)
  7. Java 并发编程中使用 ReentrantLock 替代 synchronized 关键字原语
  8. 【DeepLearning】Exercise:Sparse Autoencoder
  9. VC编写自己构造http协议数据的post上传图片类(MFC环境 带编码转换)(转)
  10. 空类,虚函数类,虚继承类的空间大小