【问题标题】:MQTT broker for Android适用于 Android 的 MQTT 代理
【发布时间】:2015-02-20 07:30:07
【问题描述】:

有人知道在 Android 智能手机上运行的 MQTT 代理吗?我尝试谷歌并没有发现任何东西,并且在应用商店中似乎只有一个只有 10 次下载的应用,所以我不确定它的效果如何。

【问题讨论】:

  • 为什么要在 Android 上运行 MQTT 代理?
  • 我正在开展一个项目,该项目可能需要电话上的多个客户端使用 MQTT 相互交谈。相同类型的客户端使用外部 MQTT 代理从一台设备到另一台设备相互通信,因此从重用的角度和他们通过 MQTT 通信的要求来看,我(我认为我)真的需要一个 MQTT 代理。

标签: android mqtt


【解决方案1】:

将这些依赖添加到 gradle 中

    dependencies{
   compile 'io.moquette:moquette-netty-parser:0.8.1'
    compile 'io.moquette:moquette-broker:0.8.1'
    compile 'io.moquette:moquette-parser-commons:0.8.1'
}

并使用

io.moquette.server.Server server = new io.moquette.server.Server();
server.startServer();

启动代理服务器。默认 URI 是 tcp://localhost:1883

对我来说server.startServer(); 给了我例外,因为它无法创建文件BrokerConstants.DEFAULT_MOQUETTE_STORE_MAP_DB_FILENAME。 所以,我改变了BrokerConstants.DEFAULT_MOQUETTE_STORE_MAP_DB_FILENAME 的目的地 使用下面的代码,它对我有用。

     try {
         MemoryConfig memoryConfig = new MemoryConfig(new Properties());
memoryConfig.setProperty(BrokerConstants.PERSISTENT_STORE_PROPERTY_NAME, Environment.getExternalStorageDirectory().getAbsolutePath()+ File.separator + BrokerConstants.DEFAULT_MOQUETTE_STORE_MAP_DB_FILENAME);
    server.startServer(memoryConfig); 
        // server.startServer();//is not working due to DEFAULT_MOQUETTE_STORE_MAP_DB_FILENAME; 
        Log.d(TAG,"Server Started");
         }
         catch (IOException e) { e.printStackTrace(); }
         catch (Exception e){ e.printStackTrace(); }

并使用适用于 android 的 Paho 库

compile 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0'
compile 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'

创建客户端并连接到tcp://localhost:1883 并订阅主题并开始发布和接收消息。

moquetteandroid 的库。

【讨论】:

  • 我已经尝试过了,但是这一直让我的应用程序崩溃而没有显示任何错误。你能帮我解决这个问题吗?
  • 现在它不会使应用程序崩溃,而是无法连接到服务器。如何在 tcp://localhost:1883 启动服务器?
  • 使用io.moquette.server.Server server = new io.moquette.server.Server(); server.startServer(); 启动服务 在服务或线程中运行此代码。
  • @DhruvMarwha 在这里访问它 - play.google.com/store/apps/details?id=server.com.mqtt
  • @anshulkatta 谢谢。我一定会检查出来的。你什么时候做的这个应用程序?
【解决方案2】:

我专门为此开发了一个App,请在这里下载-

它也有内置的代理和客户端..全部免费,连接你的 设备通过热点或 wifi 连接到安卓手机。

https://play.google.com/store/apps/details?id=server.com.mqtt

【讨论】:

  • 为什么这个答案被否决了?因为他自己做了这个应用程序?恕我直言,这完美地回答了最初的问题。我现在正在尝试这个应用程序
  • 能不能把代码分享到github上,开源一下会很有用的。谢谢。
  • +1 开源代码。这真的是一个很酷的应用程序。感谢您构建它。如果没有互联网,则 IP 地址为 0.0.0.0:1883。我认为这是有道理的,但如果我有其他设备通过热点连接到手机,那么我希望 IP 地址为 192.168.43.1:1883,其中 192.168.43.1 是热点的默认 IP 地址。此 IP 地址有时可能已被手机制造商更改。
【解决方案3】:

这是一个我已经适应 Android 的 MQTT 代理库:https://github.com/interaktionsbyran/moquette 不过,您必须制作自己的 Android 应用,它只是一个库。

【讨论】:

  • 你能帮忙制作一个使用 moquette for Android 的示例应用吗?
【解决方案4】:

您可以在 Termux 终端中运行 mosquitto mqtt 代理。

  • 使用例如安装Termux F-Droid
  • 打开/运行 Termux 终端仿真器
  • 安装蚊子

    pkg install mosquitto

  • 在终端内启动 mosquitto

    mosquitto

就是这样。服务器将侦听默认端口 1883。 配置见mosquitto

【讨论】:

  • 这个问题非常清楚地表明它是关于“在 Android 智能手机上运行”的 MQTT 代理
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-06
相关资源
最近更新 更多