Tag: mqtt

Paho Mqtt Android连接到经纪人失败(32103)

我在1883年(mqtt)的网络中有一个ActiveMQ经纪人。 如果我使用简单的Java应用程序连接到该代理,并且mqtt-client-0.4.0.jar库一切正常。 现在我想用Android设备连接到该代理。 不幸的是,我无法管理它以获得成功的连接。 我总是收到以下错误: 03-23 11:08:15.679 24572-24572/com.my.package E/WorkerMQTT: onFailure: Unable to connect to server (32103) – java.net.ConnectException: failed to connect to /192.192.192.10 (port 1883) after 30000ms: isConnected failed: ENETUNREACH (Network is unreachable) 03-23 11:08:15.687 24572-24572/com.my.package W/System.err: Unable to connect to server (32103) – java.net.ConnectException: failed to connect to /192.192.192.10 (port 1883) after 30000ms: isConnected […]

Mosquitto安全MQTT连接

我的问题是关于TLS / SSL MQTT连接。 我已经从这个网站安装了moaquitto broker。 http://www.eclipse.org/mosquitto/download/ 并使用java中的paho eclipse库进行简单的订阅/发布。 然后我在java中使用bouncycastle创建了X509证书。 但现在我陷入了关于这些证书的服务器配置。我需要在同一个代理上为不同的主题使用不同的证书。 我发现的是以下mosquitto-auth-plug。 https://github.com/jpmens/mosquitto-auth-plug 但是在mosquitto_auth_plugin中我们需要定义包含用户名和密码进行身份validation的后端数据库。 我们如何在这里保存证书? 正如我上面所说,我正在为客户端创建X509 rootCA服务器和X509证书。我对此感到困惑。 有没有其他/更好的方式来确认服务器有关这些证书? 是否可以使用HiveMQ,ActiveMQ或RabbitMQ等任何其他经纪人来实现此目的?

Android – Paho Mqtt客户端在网络连接更改后不会收到消息(移动数据已禁用并再次启用)

我正在使用Mosquitto Mqtt和paho API来接收Android设备上的推送消息。 但是一旦网络连接发生变化,就会停止接收消息。 以下是使用简单测试用例重现问题的步骤: 1)创建一个简单的活动。 2)On Activity StartUp通过paho API连接到mosquitto测试服务器(test.mosquitto.org:1883)。 3)订阅一些主题。 4)向主题发布一些消息。 结果: Mqtt Client收到发布到该主题的所有消息。 现在 5)禁用移动设备上的互联网连接(移动数据) 6)向主题发布一些消息。 7)重新连接互联网。 结果:客户端在禁用Internet连接后未收到任何已发布的消息。 由于KeepAliveInterval一直保持高值(30分钟),它应该在重新连接到互联网后收到所有消息。 相同的用例(相同的代码)适用于简单的java项目(非android),我在我的笔记本电脑上禁用互联网来运行用例。 知道为什么它不能在Android设备上工作??? 我错过了什么吗? 注意: 1)使用mqtt-client-0.4.1 2)Android目标API级别11 3)测试期间不要将设备置于睡眠模式。 4)在connectionLost回调中没有得到任何调用,并且mqtt回调的所有4个线程都在整个测试用例中运行,即mosquitto服务器的连接是完整的。

Eclipse paho Mqtt:获取java.io.EOFexception

当我试图订阅mqtt客户端时,我得到“java.io.eof”exception。 我正在使用eclipse paho库并使用mosquitto broker。 我没有得到任何答案,所以请帮助我为什么会这样? Mqtt连接和订阅 我正在使用此代码连接和订阅mosquitto private void buildClient(String clientId){ log.debug(“Connecting… “+clientId); try { mqttClient = new MqttClient(envConfiguration.getBrokerUrl(), clientId,new MemoryPersistence()); System.out.println(mqttClient.isConnected()); } catch (MqttException e) { log.debug(“build client stopped due to “+e.getCause()); } chatCallback = new ChatCallback(this.userService,this); mqttClient.setCallback(chatCallback); mqttConnectOptions = new MqttConnectOptions(); mqttConnectOptions.setCleanSession(true); } @Override public void connect(String clientId,String topic) { try{ if(mqttClient == […]

无法接收已发布的消息以订阅mqtt paho上的主题

我正在使用paho来发送和接收mqtt消息。 到目前为止,发送消息没有问题。 我收到它们有问题。我的代码是: package BenchMQTT; import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; import org.eclipse.paho.client.mqttv3.IMqttToken; import org.eclipse.paho.client.mqttv3.MqttCallback; import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttMessage; import org.eclipse.paho.client.mqttv3.MqttClient; public class Test_A_2 implements MqttCallback { MqttClient clientR; MqttClient clientS; public Test_A_2() { } public static void main(String[] args) throws InterruptedException { long startTime = System.currentTimeMillis(); new Test_A_2().doDemo(); long endTime = System.currentTimeMillis(); } public void doDemo() throws InterruptedException […]

如何使用自签名证书连接到Android(paho客户端)中的Mqtt服务器?

我在使用自签名证书连接到mqtt服务器时遇到问题。 即时通讯使用Paho客户端,并希望使用TLSv1.2连接到服务器。 实际上,我成功连接Android API 20+,但在此版本以下没有成功。 到目前为止我做了什么: 1-创建了一个PKCS#12密钥库并放入.crt文件并为其提供密码并保存(它将是.pfx文件) 2-将.pfx文件添加到android项目中的原始文件夹中 3-使用下面的代码加载自签名证书: connection = createConnection(mqttCallback); MqttConnectOptions connOpts = optionsFromModel(connectionModel); connOpts.setSocketFactory(getSSLSocketFactory(keyStoreInputStream, keyStorePassword)); connection.addConnectionOptions(connOpts); 而getSSLSocketFactory方法是最重要的部分: public SSLSocketFactory getSSLSocketFactory (InputStream keyStore, String password) throws MqttSecurityException { try{ SSLContext ctx = null; SSLSocketFactory sslSockFactory=null; KeyStore ks; ks = KeyStore.getInstance(“PKCS12”); ks.load(keyStore, password.toCharArray()); TrustManagerFactory tmf = TrustManagerFactory.getInstance(“X509”); tmf.init(ks); TrustManager[] tm = tmf.getTrustManagers(); ctx = […]

Java Eclipse Paho实现 – 自动重新连接

我正在尝试在我的项目中实现eclipse.paho来连接Mqtt Broker(订阅和发布目的)。 问题是,当我使用订阅function(实现MqttCallback接口)时,我无法MqttCallback如果连接丢失,我该如何重新连接。 MqttCallback接口有一个connectionLost方法,但它对调试很有用,导致连接丢失。 我搜索但找不到建立自动重新连接的方法。 你能就这个问题提出一个方法或文件吗? 提前致谢。

Spring MqttPahoMessageDrivenChannelAdapter丢失连接:连接丢失; 重试

我们使用Spring message-driven-channel-adapter来订阅MQTT主题。 但是我们经常遇到错误。 我已经使用JavaScript客户端( mqttws31.js )测试了连接,它工作正常。 意味着连接没有问题。 错误: – org.springframework.integration.mqtt.inbound.MqttPahoMessageDrivenChannelAdapter connectionLost SEVERE: Lost connection:Connection lost; retrying… MQTT消息: – [payload=6483D03E4C75BA943148F18D73,1.00,1E, headers={mqtt_retained=false, mqtt_qos=0, id=5fa41168-34c6-1e3d-a775-e3146842990a, mqtt_topic=TEST/GATEWAY2, mqtt_duplicate=false, timestamp=1499067757559}] 配置 : – pom.xml: org.eclipse.paho org.eclipse.paho.client.mqttv3 1.1.1 org.springframework.integration spring-integration-mqtt 4.2.2.RELEASE 在调试org.eclipse.paho.client.mqttv3-1.1.1-sources.jar : – CommsReceiver.Java public void run() { final String methodName = “run”; MqttToken token = null; while (running && […]

如何在Eclipse PAHO Java MQTT客户端和Mosquitto代理之间创建PSK连接?

我正在尝试在mosquitto mqtt代理和使用Eclipse Paho客户端库的Java编写的应用程序之间配置预共享密钥加密连接。 我已经成功地在两者之间建立连接,使用无加密并使用SSL,其中服务器证书经过身份validation但没有客户端证书。 我想通过使用预共享密钥来加密连接(身份validation并不重要),这是mosquitto代理肯定支持的,但我不确定Eclipse Paho库是否支持它。 该库为您提供了两种配置安全连接的方法。 要么通过 setSSLProperties(java.util.Properties props) 方法 – 使用以下属性: com.ibm.ssl.protocol com.ibm.ssl.contextProvider com.ibm.ssl.keyStore com.ibm.ssl.keyStorePassword com.ibm.micro.security.Password.obfuscate(char[] password). com.ibm.ssl.keyStoreType com.ibm.ssl.keyStoreProvider com.ibm.ssl.trustStore com.ibm.ssl.trustStorePassword com.ibm.micro.security.Password.obfuscate(char[] password). com.ibm.ssl.trustStoreType com.ibm.ssl.trustStoreProvider com.ibm.ssl.enabledCipherSuites com.ibm.ssl.keyManager com.ibm.ssl.trustManager 或通过 setSocketFactory(javax.net.SocketFactory socketFactory) 方法。 有没有人对我使用的工具和库有任何经验,任何人都可以提供任何建议,以便我可以得到一些有用的东西? 是否有可能创建一个ssl套接字工厂,它能够返回一个可以应对我需要的PSK实现的套接字? 谢谢你的帮助 :-)

node.js和java之间的mqtt通信

目标是使用mqtt协议发送数据。 Java项目(tempSensor)使用mqtt协议生成tempvalue,使用mqtt订阅tempvalue的node.js。 node.js和java项目都使用相同的密钥进行发布/订阅。 我可以使用java项目发布数据,也可以在node.js中订阅数据。 但数据不是可读格式。 怎么做 ? 因此数据是可读格式。 TempStruct的结构如下: public class TempStruct implements Serializable { private static final long serialVersionUID = 1L; private double tempValue; public double gettempValue() { return tempValue; } private String unitOfMeasurement; public String getunitOfMeasurement() { return unitOfMeasurement; } public TempStruct(double tempValue, String unitOfMeasurement) { this.tempValue = tempValue; this.unitOfMeasurement = unitOfMeasurement; } […]