使用MQTT服务器发送消息

时间:2013-12-26 11:45:10

标签: android sendmessage mqtt

我需要使用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}";
}

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

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

1 个答案:

答案 0 :(得分:0)

  1. 您需要在您的Android应用中添加MQTT客户端,例如Eclipse Paho
  2. 从Android应用程序连接到您的MQTT代理。如果未连接MQTT,您将无法接收这些通知。因此,您可能应该研究类似于Android服务的东西,以确保它保持活跃状态​​,然后使用强大的代码来确保它处理断开连接。
  3. 订阅特定于客户端的频道,例如由设备ID识别的频道。
  4. 通过在该频道上发布,向该设备发送消息。
  5. 需要注意的事项:根据您的MQTT代理,订阅者在发送时未收到的消息可能不会保留很长时间(如果有的话)。