我尝试通过添加以下行来编辑
mosquitto.conf
文件到文件listener 9001
protocol websockets
,但似乎不起作用。我附加的图像可能会提供更好的图像:
我也不太确定命令,但它们似乎可以使用默认端口1883。
所以问题是:如何使其工作?
#1 楼
一些事情:mosquittto_pub
和mosquitto_sub
命令根本不支持WebSockets。从命令行运行mosquitto时,您必须明确指向具有-c选项的配置文件
mosquitto -v -c /path/to/mosquitto.conf
可从mosquitto.org下载页面获得的Windows版本不支持WebSockets,因此只有WebSockets可用支持是如果您自己从源代码构建mosquitto并启用它。(从1.5.1版本开始,Windows版本现在包含websocket支持)
#2 楼
正如@hardlib所说,您必须从源代码编译mosquitto。为了使它在Windows上运行,我们花了一些试验和错误,因此在这里提供一些摘要,以防它对某些人有所帮助。请立即进行更正:先决条件
安装Visual Studio
安装cmake(最新版本很好)
将OpenSSL安装到C:\ temp \ OpenSSL
将pthread解压缩到C:\ pthreads
构建libwebsockets:
git clone https://github.com/warmcat/libwebsockets.git
并进入项目目录确保您处于稳定的提交状态,(2.3为
6cf0a981667f0d225a9cf2d7aecfd6f50be6c1fb
)mkdir build && cd build
cmake -G“ Visual Studio 15“ ..
在Visual Studio中打开.sln并将生成类型设置为释放并按Ctrl + Shift + B
Build mosquitto
git clone https://github.com/eclipse/mosquitto.git
cd mosquitto
mkdir build && cd build
cmake -G "Visual Studio 15" ..
cmake-gui
确保已选中websockets选项,然后单击generate
打开项目(hacky部分)
将libwebsockets \ lib和libwebsockets \ build目录作为附加包含目录添加到mosquitto项目的Release版本中,并将libwebsockets \ build \ lib \ Release添加到t
从config.h中注释掉
#define snprintf sprintf_s
结构。从pthreads.h中注释掉
timespec
结构。从其他库中删除了optimized.lib和debug.lib。 mosquitto_passwd项目
将
#include <Windows.h>
添加到mosquitto_passwd的win32 ifdef中。c选择释放模式,然后按Ctrl + Shift + B
#3 楼
从1.5.1开始,Windows程序包支持websocket,请参见changelog https://mosquitto.org/blog/您只需编辑mosquitto.conf文件,通过添加“ protocol websockets”来指定使用websocket协议(请参阅第145行的定义),如果将其作为服务运行,则最终重新启动mosquitto
评论
为Websockt支持添加侦听器9001和协议websocket,并将侦听器1883和协议mqtt使用到允许的默认mqtt流量mosquitto.config
–托马斯
20 Mar 16 '20在8:32
#4 楼
我在GitHub上找到了带有WebSockets的Mosquitto的编译版本,该版本是在GitHub上为Windows构建的,如果您不想自己构建代码,则可能会用到。虽然它是韩文文档,但其中还包含一个PowerPoint演示文稿,其中包含有关如何自行构建的说明,如果您不希望使用预编译的二进制文件。
评论
这是否意味着javascript将无法与任何pubsub客户端进行通信?而且,通过mosquitto_sub侦听该主题时,由javascript发送给代理(发布)的任何消息都不会收到该消息吗?
– Salim Shamim
17 Mar 12 '17 at 14:39
如果没有WebSockets支持,Paho javascript客户端将完全无法连接到代理,因此它将无法发布或订阅任何主题
– hardillb
17 Mar 12 '17 at 14:50
好的,引用此链接(eclipse.org/paho/clients/js):“Paho JavaScript客户端是使用Javascript编写的基于MQTT浏览器的客户端库,它使用WebSockets连接到MQTT Broker。”以及此blog.ithasu.org/2016/05/…,其中说明了如何在Linux上为Mosquitto启用WebSockets。我不明白为什么这不可能。我很抱歉,可能我只是失去了。
– Salim Shamim
17年3月12日在15:28
已经回答了,Windows的构建没有编译WebSockets。如果需要WebSocket支持,则必须自己构建它。
– hardillb
17 Mar 12 '17 at 15:30
很难听到。我一直在尝试使用各种参考构建Mosquitto的版本,但是我总是被困在某个地方。我也找不到任何具有启用了websocket的mosquitto(Windows托管)二进制文件的人。
–吴宗宪
17-4-28的2:11