mqtt-client in android 2.1 app
使用fusesource mqtt-client-java1.4-uber-1.0(在android应用中)时出现一些问题。 当我提供错误的IP或mqtt代理未在正确的IP上运行时,它会警告消息"无法连接(回调)",而不是"无法连接(侦听器)"。 当我提供正确的IP并且代理正在运行时,根本不会显示任何警报。 我猜听者根本不工作,并且连接的成功回调不起作用。 有想法吗? 下面是android活动的完整代码。
我正在使用以下版本的mqtt-client:mqtt-client-java1.4-uber-1.0.jar
我还尝试了RSMB和Mosquitto的其他Messenger代理(服务器)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | package racenet.mqtt; import java.net.URISyntaxException; import org.fusesource.hawtbuf.Buffer; import org.fusesource.hawtbuf.UTF8Buffer; import org.fusesource.mqtt.client.Callback; import org.fusesource.mqtt.client.CallbackConnection; import org.fusesource.mqtt.client.Listener; import org.fusesource.mqtt.client.MQTT; import racenet.mqtt.R; import android.app.Activity; import android.app.AlertDialog; import android.os.Bundle; public class MQTTActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MQTT mqtt = new MQTT(); try { mqtt.setHost("tcp://proper-ip-here:1883"); } catch (URISyntaxException e) { new AlertDialog.Builder(MQTTActivity.this) .setMessage("Could not set host") .setNeutralButton("OK", null) .show(); } final CallbackConnection connection = mqtt.callbackConnection(); connection.listener(new Listener() { public void onConnected() { new AlertDialog.Builder(MQTTActivity.this) .setMessage("Connected (listener)") .setNeutralButton("OK", null) .show(); } public void onDisconnected() { new AlertDialog.Builder(MQTTActivity.this) .setMessage("Disconnected (listener)") .setNeutralButton("OK", null) .show(); } public void onFailure(Throwable arg0) { new AlertDialog.Builder(MQTTActivity.this) .setMessage("Failure (listener)") .setNeutralButton("OK", null) .show(); } public void onPublish(UTF8Buffer arg0, Buffer arg1, Runnable arg2) { new AlertDialog.Builder(MQTTActivity.this) .setMessage("Publish (listener)") .setNeutralButton("OK", null) .show(); } }); connection.connect(new Callback<Void>() { public void onFailure(Throwable value) { new AlertDialog.Builder(MQTTActivity.this) .setMessage("Could not connect (callback)") .setNeutralButton("OK", null) .show(); } public void onSuccess(Void v) { new AlertDialog.Builder(MQTTActivity.this) .setMessage("Connected (callback)") .setNeutralButton("OK", null) .show(); } }); } } |
现在,Eclipse提供了IBM贡献的MQTT客户端Java实现,作为开源代码-http://git.eclipse.org/c/paho/
mqtt-client-java1.4-uber-1.0简直就是糟糕的实现