Windows平台
-
准备模块:
-
github mosquitto
-
github libwebsocket
git clone https://libwebsockets.org/repo/libwebsockets
-
pthread
-
opensssl
-
vs2015
-
cmake
-
-
过程
-
解压,安装pthread 和openssl, pthread 选择的Prebuilt.2,32位版本, openssl1_1_1,32位版本;
-
cmake libwebsocket,如果openssl安装正确,cmake结束会填充openssl的相关环境;
OPENSSL_APPLINK_SOURCE = %OPENSSL_HOME%/include/openssl/applink.c SSL_EAY_DEBUG = %OPENSSL_HOME%/lib/VC/libssl32MDd.lib SSL_EAY_RELEASE = %OPENSSL_HOME%/lib/VC/libssl32MD.lib LIBCRYPTO_BIN = %OPENSSL_HOME%/bin/libcrypto-1_1.dll LIBSSL_BIN = %OPENSSL_HOME%/bin/libssl-1_1.dll LIB_EAY_DEBUG = %OPENSSL_HOME%/lib/VC/libcrypto32MDd.lib LIB_EAY_RELEASE = %OPENSSL_HOME%/lib/VC/libcrypto32MD.lib
-
编译libsebsockets过程中, vs2015项目属性,告警视作错误选项关闭(/WX-), 源代码中有两个log输出语句无法识别,直接注释掉;
-
将libwebsockets源码中的include文件夹拷贝到 VS的include文件夹中;
-
选择win32, MinSizeRel 编译.过程中未遇到错误;
-
cmake mosquitto, 同上指定OPENSSL的相关环境, 指定libwebsockets_DIR,勾选WITH_WEBSOCKETS;
-
项目属性 (/WX-), 如过无法找到libwebsocket的库路径,在项目属性->链接->输入里指定;
-
编译无误,生成的exe和dll在未指定输出目录的框下分散在项目目录的对应文件夹下,提到一个文件夹中;
-
使用Dependencies工具确认是否有缺失的DLL,补全缺失的依赖DLL后,可以直接运行;
-
-
使用说明
- 配置文件
# 允许匿名登录 allow_anonymous true # 第一个监听的端口 listener 1088 127.0.0.1 # 第一个监听端口使用的协议 protocol mqtt # 第二个监听的端口 listener 1087 127.0.0.1 # 第二个监听端口使用的协议 protocol websockets
-
测试
-
进入html文件夹,打开test.html,
-
浏览器中打开控制台,输入:
client = new Paho.MQTT.Client("127.0.0.1", Number(1087), "ppp"); client .connect({})
在网络请求中可以看到mqtt请求已经完成链接(返回状态码:101)
-
-
其他
迁移到其他机器运行时需要先安装VS2015 32位的 runtime enviroment; 64位的没有测试过,正常编译应该没问题.