【问题标题】:Send message using MQTT server使用 MQTT 服务器发送消息
【发布时间】:2013-12-26 11:45:10
【问题描述】:

我需要使用 MQTT 将消息从我们的服务器传递到 android 设备,我决定使用开源服务器 mosquitto。我已经设置了 mosquitto 和 tokudu 服务的所有安装要求。

现在出现的问题是如何实现向设备发送消息的主要目标。我怎样才能做到这一点。

我参考了链接here。

为了发送简单的短信和接收响应,我在服务代码下面实现了。

$srv = new soap_server();
$srv->configureWSDL('send mqtt msg', 'urn:mqttwsdl');
$srv->register("send_mqtt_msg",
array('target' => 'xsd:string', 'message' => 'xsd:string'),                 // input parameters
array('return' => 'xsd:string'),              // output parameters
'urn:mqttwsdl',                              // namespace
'urn:mqttwsdl#mqtt',                        // soapaction
'rpc',                                    // style
'encoded',                              // use
'Sends message to server'            // documentation   );

函数 send_mqtt_msg 有以下内容

function send_mqtt_msg($target, $message)
{
     include("SAM/php_sam.php");
     $conn = new SAMConnection();
     $result = $conn->connect(SAM_MQTT, array("SAM_HOST" => '127.0.0.1', "SAM_PORT" => 1883));
     $msgCpu = new SAMMessage($message);
     $sent = $conn->send('topic://EBackup/'.$target, $msgCpu);
     $rc = $conn->disconnect();

     if($result)
       return "Message target {$target} | Message is {$message}";
}

这对我来说很好用。 但是在向设备发送消息时,我不知道如何实现这一点。请帮忙。

我是新手,请指导。 提前谢谢你。

【问题讨论】:

    标签: android sendmessage mqtt


    【解决方案1】:
    1. 您需要将 MQTT 客户端(例如 Eclipse Paho)添加到您的 Android 应用中。
    2. 从 Android 应用程序连接到您的 MQTT 代理。如果 MQTT 未连接,您将无法接收这些通知。因此,您可能应该研究类似 Android 服务的东西,以确保它保持活动状态,然后拥有健壮的代码来确保它处理断开连接。
    3. 订阅特定于客户端的频道,例如由设备 ID 标识的频道。
    4. 通过在该频道上发布将消息发送到该设备。

    需要注意的一点:根据您的 MQTT 代理,订阅者在发送时未收到的消息可能不会保留很长时间(如果有的话)。

    【讨论】:

    • 我试过this demo 来获取设备上的通知并且它工作正常,但是对于消息,我很困惑。
    猜你喜欢
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多