文章钢要:

目前笔者在开发搭建Mosquitto服务器,在此期间遇到很多实际问题,所以走了很多弯路,在这里写出来为大家提供一些帮助。

1、安装完成后启动Mosquitto报错

执行mosquitto客户端程序时出现找不到动态库:libmosquitto.so.1

./mosquitto_sub: 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

ldconfig

即可

2、启动Mosquitto服务器时配置文件报错

Invalid user 'mosquitto'.

[root@localhost src]# ./mosquitto
: Error: Invalid user 'mosquitto'.

这是因为配置文件里没有当前用户,有2中解决方法:

1.修改配置文件:mosquitto.conf ,增加登录的用户,例如当前登录用户为root。

2.执行命令增加当前用户: adduser mosquitto

3、重启Mosquitto

笔者在网上找了很多资料都没有提起怎样重启服务器,并且在官网上也没有相应命令提示。

所以我们使用Liunx终止进程命令,强行退出。

先kill掉,再重启:
[root@localhost ~]# ps -A | grep mosquitto
? :: mosquitto
[root@localhost ~]# kill -

4、连接无响应

服务器正常开启,但是远程发布信息的时候会有如下提示:

no route to host
这时远程服务器上防火墙将信息连接,所以执行下面命令问题解决
[zhoulei@localhost ~]$ sudo iptables -F
 
5、桥接(bridge)时前缀设置设置
在做桥接时会有如下配置:
connection Bridge
address 192.168.0.100:1883
topic rootdir/# both 2 localprefix/ remoteprefix/
 
connection Bridge2
address 192.168.0.101:1883
topic rootdir/# both 2 localprefix/ remoteprefix/

主服务器与2台从服务器做了桥接,在100服务器上订阅消息

mosquitto_sub -t remoteprefix/rootdir/#

在100与101服务器上发布消息

mosquitto_pub -t remoteprefix/rootdir/ -m "Hello word"

上述订阅者可以收到“Helloworld”。如果在主服务器上发布消息就要使用

mosquitto_pub -t localprefix/rootdir/ -m “Hello world”

订阅者才能收到消息。因此会产生一个问题在写代码的时候,需要区分是主服务器还是从服务器。以便增加本地前缀或者远程前缀。会给编程带来很多麻烦。

为了解决这个问题可以将2个前缀名称写成一致即可。如下:

connection Bridge
address 192.168.0.100:1883
topic rootdir/# both 2 prefix/ prefix/
 
connection Bridge2
address 192.168.0.101:1883
topic rootdir/# both 2 prefix/ prefix/

Mosquitto搭建Android推送服务番外篇一:各种报错解决的更多相关文章

  1. Mosquitto搭建Android推送服务(一)MQTT简介

    总体概要: MQTT系列文章分为4部分 1.MQTT简介 2.mosquitto服务器搭建 3.编写Mosquitto的可视化工具 4.使用Mosquitto完成Android推送服务 文章钢要: 对 ...

  2. Mosquitto搭建Android推送服务(二)Mosquitto简介及搭建

    文章钢要: 1.了解Mosquitto服务器 2.在Liunx中搭建Mosquitto服务器 3.设置Mosquitto集群 一.Mosquitto简介 一款实现了消息推送协议 MQTT v3.1 的 ...

  3. Mosquitto搭建Android推送服务(三)Mosquitto集群搭建

    文章钢要: 1.进行双服务器搭建 2.进行多服务器搭建 一.Mosquitto的分布式集群部署 如果需要做并发量很大的时候就需要考虑做集群处理,但是我在查找资料的时候发现并不多,所以整理了一下,搭建简 ...

  4. Mosquitto搭建Android推送服务(四)Mosquitto服务器用户登录与权限配置

    文章钢要: 1.对服务器进行多用户配置 2.根据不同用户给予不同权限 一.Mosquitto的用户机制 mosquitto中可以添加多个用户,只有使用用户名和密码登陆服务器才允许用户进行订阅与发布操作 ...

  5. Android推送服务——百度云推送

    一.推送服务简介 消息推送,顾名思义,是由一方主动发起,而另一方与发起方以某一种方式建立连接并接收消息.在Android开发中,这里的发起方我们把它叫做推送服务器(Push Server),接收方叫做 ...

  6. Android推送服务(2)微信智能心跳方案

    http://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=207243549&idx=1&sn=4ebe4beb8123f1b5 ...

  7. Android推送服务(1)几种实现方式

    1.几种常见的解决方案实现原理 1)轮询(Pull)方式:应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等.而且你还要考虑轮询的频率,如果 ...

  8. 解决跟Docker私有仓库登陆,推送,拉取镜像出现的报错

    出现问题:Error response from daemon: Get https://192.168.186.120/v1/users/: dial tcp 192.168.186.120:443 ...

  9. Android Studio ERROR: x86 emulation currently requires hardware acceleration!报错解决傻瓜教程~

    很早之前就碰到过Android Studio模拟器无法启动的问题,今天终于尝试去解决了下,下面将我解决的方法记录下. 模拟器报错信息为: emulator: ERROR: x86 emulation ...

随机推荐

  1. static实现单例的隐患

    1. 前言 Java的单例有多种实现方式:单线程下的简单版本.无法在指令重排序下正常工作的Double-Check.static.内部类+static.枚举--.这篇文章要讨论的,是在使用static ...

  2. jQuery中的100个技巧

      1.当document文档就绪时执行JavaScript代码. 我们为什么使用jQuery库呢?原因之一就在于我们可以使jQuery代码在各种不同的浏览器和存在bug的浏览器上完美运行. < ...

  3. Smallest Common Multiple

    FCC题目:找出能被两个给定参数和它们之间的连续数字整除的最小公倍数. 范围是两个数字构成的数组,两个数字不一定按数字顺序排序. 例如对 1 和 3 -- 找出能被 1 和 3 和它们之间所有数字整除 ...

  4. MYSQL远程登录权限设置 ,可以让Navicat远程连接服务器的数据库

    Mysql默认关闭远程登录权限,如下操作允许用户在任意地点登录: 1. 进入mysql,GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY ...

  5. iframe自适应高度

    http://wenrunchang123.iteye.com/blog/1684843

  6. 换肤系统(oocss方式)

    近期想做一个换肤系统,参考过Bootstrap系统,思前想后,内容不难,但就是理不清楚,主要是换肤系统的css如何设计,怎样设计可重用性最好,后期更方便修改和维护,还有一个最头疼的就是怎么给css进行 ...

  7. JSPatch 技术要点

    作者:干掉crash链接:https://zhuanlan.zhihu.com/p/21884786来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 如果有方法不遵守语言 ...

  8. python包使用指南-创建虚拟环境

    创建虚拟环境的两种方法: 1.virtualenv 2.venv http://packaging.python.org/en/latest/installing/#creating-virtual- ...

  9. webapi6

  10. JVM内存垃圾回收方法

    1.概述 1.1.为什么要回收? 如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断地分配内存空间而不进行回收.除非内存无限大,我们可以任性地分配而不回收,但是事实并非如此.所以,垃圾回收是必须 ...