美文网首页
mac下编译mosquitto支持websockets遇到的坑

mac下编译mosquitto支持websockets遇到的坑

作者: 云上听风 | 来源:发表于2018-11-22 00:17 被阅读0次

编译编译真是浪费生命!

mosquitto真是坑,官方对于编译开启websockets支持只有短短一句话:

libwebsockets (libwebsockets-dev) - enable with make WITH_WEBSOCKETS=yes

但其实你先要安装libwebsockets,简单一点使用:

brew install libwebsockets

不过你要安装最新版本的libwebsockets就要手动自己安装了。

然后打开mosquitto的config.mk文件,修改:

WITH_WEBSOCKETS:=yes

如果想安装mosquitto到自定义目录则在CMakeLists.txt文件中添加:

set (CMAKE_INSTALL_PREFIX "你的自定义目录路径")

开始编译:

cmake .
make
make install

编辑/usr/local/etc/mosquitto/mosquitto.conf,添加:

listener 1883
protocol mqtt
listener 1884
protocol websockets

嗯,官方连这个配置都没说。
这儿开启了两个端口,一个用于mqtt socket协议,一个用于mqtt websockets协议。

执行:

cd /usr/local/sbin/
 ./mosquitto -c ../etc/mosquitto/mosquitto.conf

然后会出现错误:

Error: Websockets support not available.

WTF,分明根据官方说的配置开启了WITH_WEBSOCKETS:=yes,为什么还说不支持Websockets?
因为不会cmake想偷懒一下,在github上面官方的Issue找到有人也问同样问题也没人能正确回答,stackoverflow上也没有答案,没办法只能自己动手解决。

打开CMakeCache.txt,找到一行:

WITH_WEBSOCKETS:BOOL=OFF

妈的,为什么这里是OFF? 于是手动改成ON,并且在CMakeLists.txt文件中添加:

find_package(libwebsockets REQUIRED)

然后重新运行编译安装,这回开启mosquitto后显示成功开启了websockets:

1542814792: mosquitto version 1.5.4 starting
1542814792: Config loaded from ../etc/mosquitto/mosquitto.conf.
1542814792: Opening ipv6 listen socket on port 1883.
1542814792: Opening ipv4 listen socket on port 1883.
1542814792: Opening websockets listen socket on port 1884.

更简单的解决办法:

原来在src目录下还有个CMakeLists.txt文件,其中有一行:

option(WITH_WEBSOCKETS "Include websockets support?" OFF)

把这个OFF改成ON,就可以了。

一个很小的问题把人折磨半天浪费时间,官方也不好好写在README里面。
我没用过cmake还得一边网上查cmake用法,真是折腾。
而且我还遇到了找不到openssl头文件和库的问题:
解决办法还是在CMakeLists.txt文件中添加:

set (OPENSSL_ROOT_DIR "/usr/local/opt/openssl")
set (OPENSSL_INCLUDE_DIR "/usr/local/opt/openssl/include")
set (OPENSSL_LIBRARIES "/usr/local/opt/openssl/lib/libssl.dylib;/usr/local/opt/openssl/lib/libcrypto.dylib")

顺便再学一条cmake打印变量的命令:

message("${OPENSSL_INCLUDE_DIR}")
message("${OPENSSL_LIBRARIES}")

另外修改了CMakeLists.txt最好删除CMakeCache.txt,然后重新cmake编译。

相关文章

网友评论

      本文标题:mac下编译mosquitto支持websockets遇到的坑

      本文链接:https://www.haomeiwen.com/subject/qufkqqtx.html