IMqttClient类没有提供任何指定客户端ID的方法?

时间:2014-11-26 10:08:48

标签: android mqtt messagebroker paho

此类IMqttClient()允许您创建一个client对象,其中包含对所有可能发生的事件的回调,例如

@Override
public void subscribe(String arg0) throws MqttException, MqttSecurityException {

    // TODO Auto-generated method stub
}

@Override
public void setCallback(MqttCallback arg0) {

    // TODO Auto-generated method stub
}

@Override
public void publish(String arg0, byte[] arg1, int arg2, boolean arg3) throws MqttException, MqttPersistenceException {

    // TODO Auto-generated method stub
}

但是这个类不允许您为每个客户端指定ID。怎么可能?特别是如果你想与clean session = false联系?

此外,我在实例化对象时检查了类MqttConnectOptions,您可以将server URI设置为一个选项,之后您可以执行client.connect(opts)之类的操作,但是没有方式来指定ID

2 个答案:

答案 0 :(得分:0)

Paho Library提供了一个选项,可以在创建Mqttclient的对象时在构造函数中提供客户端ID:

以下是语法:

mClient = new MqttClient(Constant.serverLink, Constant.client_id, null);

您可以在那里提供客户。

希望这会帮助你!

答案 1 :(得分:0)

如果您正在使用com.ibm.mqtt.IMqttClient中的库,则在连接时指定clientId:

mqttClient.connect(clientId, cleanStart, keepAliveSeconds);

有关详细信息,请参阅此文档:http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html

如果您正在使用其他库,请阅读文档。他们肯定会允许您指定clientId。没有一个是没有用的,因为除了没有它之外你将无法做任何事情。