Mosquitto ERR_CONNECTION_REFUSED 在 win 10 上使用 websockets(paho 客户端)

Mosquitto ERR_CONNECTION_REFUSED using websockets (paho client) on win 10

我已经阅读了所有有类似问题的帖子,但找不到答案。

蚊子配置:

listener 1883 127.0.0.1
protocol mqtt
listener 9001 127.0.0.1
protocol websockets

日志输出:

1567705166: mosquitto version 1.6.2 starting
1567705166: Config loaded from C:\Program Files (x86)\mosquitto\mosquitto.conf.
1567705166: Opening ipv4 listen socket on port 1883.
1567705166: Opening websockets listen socket on port 9001.
1567705166: Opening websockets listen socket on port 1883.

Chrome 开发工具:

mqttws31.js:977 WebSocket connection to 'ws://127.0.0.1:9001/mqtt' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED

我尝试了很多方法但没有任何帮助:

  1. 仅尝试 websockets
  2. 正在尝试另一个端口(1883 和 9001 而不是 8080)
  3. 关闭Windows防火墙

如果我将配置文件更改为:

#listener 1884 127.0.0.1
#protocol mqtt
#listener 1883 127.0.0.1
protocol websockets

Mosquitto 在端口 1883 上侦听 websockets 但日志文件显示:

1567706943: mosquitto version 1.6.2 starting
1567706943: Config loaded from C:\Program Files (x86)\mosquitto\mosquitto.conf.
1567706943: Opening websockets listen socket on port 1883.
1567706943: Error in poll: No error.
1567706943: Error in poll: No error.
1567706943: Error in poll: No error.
1567706943: Error in poll: No error.
1567706943: Error in poll: No error.
1567706943: Error in poll: No error.
1567706943: Error in poll: No error.
1567706943: Error in poll: No error.
1567706943: Error in poll: No error.
1567706943: Error in poll: No error.

将配置更改为:

protocol websockets
listener 8080 127.0.0.1
protocol mqtt

给我一个日志文件,上面写着:

1567707450: mosquitto version 1.6.2 starting
1567707450: Config loaded from C:\Program Files (x86)\mosquitto\mosquitto.conf.
1567707450: Opening ipv4 listen socket on port 8080.
1567707450: Opening websockets listen socket on port 1883.

(没有多余的废话)

跟进回答 1 后:

配置:

protocol websockets
listener 1883 127.0.0.1
protocol mqtt

控制台:

WebSocket connection to 'ws://127.0.0.1:1883/mqtt' failed: Error during WebSocket handshake: net::ERR_CONNECTION_RESET

日志:

1567716915: mosquitto version 1.6.2 starting
1567716915: Config loaded from C:\Program Files (x86)\mosquitto\mosquitto.conf.
1567716915: Opening ipv4 listen socket on port 1883.
1567716915: Opening websockets listen socket on port 1883.
1567716920: New connection from 127.0.0.1 on port 1883.
1567716920: Socket error on client <unknown>, disconnecting.
1567716920: New connection from 127.0.0.1 on port 1883.
1567716920: Socket error on client <unknown>, disconnecting.
5492: Error in poll: No error.
1567715492: Error in poll: No error.
1567715492: Error in poll: No error.
1567715492: Error in poll: No error.
1567715492: Error in poll: No error.
1567715492: Error in poll: No error.

尝试了另一个 websockets 客户端 (https://www.eclipse.org/paho/clients/js/utility/) --> 连接失败:AMQJSC0001E 连接超时。

我无法让 websockets 与任何配置/端口一起工作... 谁能确认 Win10 的 Mosquitto(32 位版本 1.6.2 或 1.6.4)中的 Websockets 是否正常工作?

你的第一个配置文件将无法工作,因为你有本机 MQTT 和 Websockets 都试图在端口 1883 上侦听。(这是因为默认侦听器在端口 1883 上启动),不能 100% 确定这是怎么可能的除非它是 Windows.

上的一些奇怪的 IPv6 东西

第二,只是将默认侦听器协议更改为 Websockets,理论上应该可以工作,假设您尝试从网页连接到端口 1883。

第三个在 Websockets 端口 1883 上创建默认侦听器,在 8080 上创建本机侦听器。假设您正在尝试连接到 1883,应该再次工作

启用 Websockets 的最简单配置应该如下所示:

listener 9001 127.0.0.1
protocol websockets

这将使本机默认侦听器单独留在端口 1883 上(侦听所有接口,在 listener 行之前使用 bind_address 127.0.0.1 使其仅侦听本地主机)并启动 Websocket 侦听器端口 9001

事实证明这是一个很大的挑战。

首先,我尝试使用在线经纪人和客户端来让事情正常进行。还是行不通。然后我切换到另一台电脑,一切正常。

切换回原始计算机后,我决定通过转到 https://www.websocket.org/echo.html 来测试 websockets 是否可以正常工作 从那一刻起,一切都开始起作用了。首先是在线经纪人和客户端,然后是本地服务器和客户端。我不知道为什么...