Como estabelecer várias sessões para um só cliente
Neste guia, você aprenderá a estabelecer várias sessões para um só cliente em um namespace da Grade de Eventos.
Pré-requisitos
- Você já criou um namespace da Grade de Eventos. Veja este Guia de Início Rápido – Publicação e assinatura em um tópico MQTT para criar o namespace, os sub-recursos e fazer publicações/assinaturas em um tópico.
Suporte a várias sessões
Para criar várias sessões por cliente, forneça o nome de autenticação do cliente na propriedade Username do pacote CONNECT. Em seguida, forneça a ID da sessão na propriedade ClientID (Identificador de Cliente) do pacote CONNECT.
- Se a propriedade Username não for fornecida no pacote CONNECT, você não poderá criar várias sessões para o cliente.
- O campo ClientID não pode estar vazio.
- A ClientID precisa ser exclusiva em todos os clientes de um namespace
Se um cliente tentar assumir a sessão ativa de outro cliente apresentando o respectivo nome de sessão, a solicitação de conexão dele será rejeitada com o erro Não autorizado. Por exemplo, se o cliente B tentar se conectar à sessão 123 atribuída nesse momento ao cliente A, a solicitação de conexão do cliente B será rejeitada.
Se um cliente estiver desconectado sem encerrar a sessão, os outros clientes só poderão usar o nome da sessão quando ela expirar. Por exemplo, se o cliente A criar uma sessão com o nome da sessão 123, o cliente A será desconectado e o cliente B só poderá se conectar à sessão 123 quando a sessão original expirar.
A configuração de CONNECT No pacote CONNECT do MQTT, inclua o nome de autenticação do cliente no campo Username, que indica a identidade do cliente. Veja um exemplo de metadados do cliente com o nome de autenticação do cliente “ipv4=127.0.0.1”.
Agora, ao conectar o cliente ao namespace, você pode usar o campo de identificador do cliente no pacote CONNECT do MQTT como o identificador da sessão.
Por exemplo, com base na configuração do cliente, você pode enviar dois pacotes CONNECT com valores de campo do mesmo cliente:
Você poderá ver um exemplo de configuração de conexão usando o aplicativo MQTTX.
Primeiro pacote de conexão:
- username: “ipv4=127.0.0.1”
- clientId: “sessionId1”
Segundo pacote de conexão:
- username: “ipv4=127.0.0.1”
- clientId: “sessionId2”
Use as mesmas credenciais de certificado do cliente para autenticar as duas sessões.