如何测试`Mosquitto`服务器?

70
我对Mosquitto和MQTT都是新手,我下载了Mosquitto服务器库,但不知道如何进行测试。
有没有办法测试Mosquitto服务器?

服务器可以进行“烟雾测试”(粗略验证其是否运行/可用):这是一项快速测试,以验证应用程序已安装并正在运行(不一定是功能性的,因为它可能需要配置)。通常,在执行功能验证测试之前会执行烟雾测试。以下是一个示例。 - gatorback
7个回答

149
在单独的终端窗口中按以下步骤进行操作:
  1. Start the broker:

    mosquitto
    
  2. Start the command line subscriber:

    mosquitto_sub -v -t 'test/topic'
    
  3. Publish test message with the command line publisher:

    mosquitto_pub -t 'test/topic' -m 'helloWorld'
    
除了在代理终端中看到订阅者和发布者连接消息外,还应在订阅者终端中打印以下内容:
test/topic helloWorld

编辑:

值得注意的是,从Mosquitto v2.0.0版本开始,默认情况下它只会在回环接口上监听连接。如果您想从安装Mosquitto的机器以外的其他机器访问代理,则需要编辑配置文件(并使用-c选项将其传递给代理,例如:mosquitto -c /path/to/mosquitto.conf)以启用其他接口的监听。有关详细信息,请参阅v2.0.0发布说明此处


2
听起来你还没有安装它。请更新原问题,详细说明你已经完成了哪些步骤,这样我们才能帮助你。 - hardillb
1
我刚刚下载了ZIP文件并解压缩,但没有任何可执行文件可以运行。 - user2121
1
mosquitto_pub和mosquitto_sub命令会被安装到C:\Program Files (x86)\mosquitto(在Win 8上),您需要确保服务正在运行。这里可以正常工作。 - Andy Piper
1
如果您使用Homebrew在Mac上安装了Mosquitto,则Mosquitto位于sbin文件夹中。 - xmkevinchen
@xmkevincheb 嗯,那似乎是错误的,没有理由要求mosquitto必须以root/admin身份运行。 - hardillb
显示剩余4条评论

28

启动Mosquitto代理
打开终端并输入

mosquitto_sub -h 127.0.0.1 -t topic

打开另一个终端并输入
mosquitto_pub -h 127.0.0.1 -t topic -m "你好"

现在您可以切换到之前的终端,您将能够看到“你好”消息。一个终端充当发布者,另一个终端充当订阅者。


4
重复已经给出的答案有什么意义? - hardillb

16

为了测试并查看是否可以从外部世界(VM或本地机器之外)访问您的MQTT服务器,您可以在外部世界机器上安装一个MQTT发布和监视工具,例如MQTT-Spy,然后订阅“#”(表示所有主题)。

您可以按照@hardillb在上面提到的方法进行测试,并来回测试,例如:

在运行Mosquitto Server的机器上, enter image description here

在运行mqtt-spy的外部世界机器上, enter image description here

我主要提到mqtt-spy,因为它是跨平台的且易于使用。当然也可以使用其他工具。 并且据我所知,要运行 mosquitto_sub mosquitto_pub 命令,您需要在运行测试的Linux机器(在我的情况下是Ubuntu)上安装mosquitto-clients,这可以通过以下简单步骤完成:

sudo apt-get install mosquitto-clients


10
如果您正在使用Windows操作系统,请打开命令提示符并键入“netstat -an”。
如果您的服务器正在运行,则应该能够看到端口1883。
如果您无法找到,请转到任务管理器>服务,并从那里启动/重新启动Mosquitto服务器。如果在此处也找不到它,则您的Mosquitto安装可能未成功。
此处链接了一个更详细的教程,可用于设置与Windows / Mosquitto配合使用的 教程

1

这位OP没有定义测试的范围,但在进行功能测试之前,应该先进行简单(粗略的)“烟雾测试”来测试安装。

如何测试应用程序是否已安装(“烟雾测试”)

登录到mosquitto服务器的命令行,并键入:

mosquitto

如果已经安装了Mosquitto,计算机将返回以下内容:
 mosquitto version 1.4.8 (build date Wed, date of installation) starting
 Using default config.
 Opening ipv4 listen socket on port 1883

@gatorback 我不知道这种响应的主要原因是什么。 - Anshu

0

如果您希望在不安装任何工具的情况下进行基于GUI的代理测试,可以使用Hive Mqtt Web Socket来测试您的 Mosquitto 服务器。

只需访问 http://www.hivemq.com/demos/websocket-client/ 并输入服务器连接详细信息。

如果连接成功,则表示您的服务器已正确配置。

您还可以使用此mqtt web socket测试消息的 发布订阅


1
只有在mosquitto.conf文件中配置了Websocket监听器才能起作用。默认情况下,mosquitto不会启动Websocker监听器。 - hardillb
是的,我忘记了这一点,这不会在开箱即用的安装中起作用,我会更新问题,谢谢。 - Jayesh Singh

-1
如果你还在寻找一种方法来做这个,Postman已经添加了MQTT支持。目前它还处于测试阶段,但你可以在这里找到更多关于如何入门的信息here
免责声明:我在这个客户端为Postman工作。

不是关于邮递员的问题。但我看得出你喜欢邮递员。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接