使用JWT身份验证时,pubsubclient无法连接到代理

时间:2018-02-21 09:46:07

标签: mqtt arduino-esp8266

我正在使用pubsubclient库。
我使用此function连接到使用mosquitto-auth-plug进行JWT身份验证的mosquitto代理。

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    String red_token = "eyJhbGciOiJIUzUxMiJ9.*****";
    String deviceTopic = "outTopic";
    //My token length is 205 characters
    //client.connect(strDeviceId.c_str(), red_token.c_str(),"pass", deviceTopic.c_str(), 0, false, CMD_OFF_LINE)
    bool result = client.connect("newClientIdMCU",token,"pass", deviceTopic.c_str(), 0, 0, "offline");
    delay(2000);
    if (result) {
      Serial.println("connected");
      // Once connected, publish an announcement...
      client.publish(deviceTopic.c_str(), "hello world");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}

当client.connect调用:

时会发生此异常
Attempting MQTT connection...
Exception (9):
epc1=0x40202c6d epc2=0x00000000 epc3=0x00000000 excvaddr=0x445a5a51 depc=0x00000000

ctx: cont 
sp: 3ffef490 end: 3ffef720 offset: 01a0

>>>stack>>>
3ffef630:  3ffe848e 0000075b 3ffee5b8 402023e1  
3ffef640:  3ffe01dc 0afed47d 3ffe8788 0afed47d  
3ffef650:  3ffe85ae 3ffef6c0 3ffef6c0 3ffeffec  
3ffef660:  3ffe848e 3ffee4fc 3ffee500 40202db0  
3ffef670:  514d0400 3f045454 3ffef6c0 402036cd  
3ffef680:  3ffe854e 3ffe853f 00000000 4020371e  
3ffef690:  3ffe8536 3ffee5d0 3ffee6c0 3ffe848e  
3ffef6a0:  00000000 3ffee4fc 3ffee6c0 40201e02  
3ffef6b0:  00000000 3ffe8553 00000000 00000000  
3ffef6c0:  3ffeffec 0000000f 00000008 3fff056c  
3ffef6d0:  000000af 000000a7 3ffee4fc 40203114  
3ffef6e0:  3fffdad0 00000000 3ffee4fc 3ffee6ec  
3ffef6f0:  3fffdad0 3ffee4fc 3ffee6e4 40201eaa  
3ffef700:  3fffdad0 00000000 3ffee6e4 40203834  
3ffef710:  feefeffe feefeffe 3ffee700 40100718  
<<<stack<<<

 ets Jan  8 2013,rst cause:2, boot mode:(1,7)


 ets Jan  8 2013,rst cause:4, boot mode:(1,7)

wdt reset

在代理日志“新连接....”但发送CONNACK到clientId(0,0)无法发送。 可能有什么问题?

1 个答案:

答案 0 :(得分:0)

我从

更改 pubsubclient.h 文件库
// MQTT_MAX_PACKET_SIZE : Maximum packet size
#ifndef MQTT_MAX_PACKET_SIZE
#define MQTT_MAX_PACKET_SIZE 128

// MQTT_MAX_PACKET_SIZE : Maximum packet size
#ifndef MQTT_MAX_PACKET_SIZE
#define MQTT_MAX_PACKET_SIZE 256

它有效。