2015-06-18 5 views
1

Я использую ActiveMQ 5.11.1, который настроен с помощью mqtt поверх websocket.Можно ли отключить старое соединение mqtt с тем же идентификатором клиента на стороне сервера, если новое соединение связано с тем же идентификатором клиента?

Можно ли отключить старое соединение mqtt с тем же идентификатором клиента на стороне сервера, если новое соединение связано с тем же идентификатором клиента?

Когда я пробовал этот сценарий с помощью hivemq websocket, я получаю сообщение об ошибке следующим образом.

2015-06-18 20:03:06,074 | WARN | Transport Connection to: MQTTSocket_22078239 failed: java.io.IOException: Broker: localhost - Client: abc already connected from MQTTSocket_24236395 | org.apache.activemq.broker.TransportConnection.Transport | qtp20829588-40

+0

Не существует ли что-то, называемое связыванием ссылок с mqtt для такого рода? –

ответ

1

Для соединителя WS в ActiveMQ вам необходимо включить опцию allowLinkStealing

ws://0.0.0.0:61614?allowLinkStealing=true 

По умолчанию это на нормальные транспортные соединители MQTT основы, но поскольку WS транспортный соединитель должен обслуживать несколько соединений протокола (STOMP и MQTT) по умолчанию выключено.

+0

Это не работает. первое соединение tcp/ip все еще сохраняется, даже если второй клиент с тем же clientId подключается. 'jvm 1 | WARN | Ссылка на кражу для clientId abc From Connection Transport Conn ection to: MQTTSocket_12700349' – jeon

+0

FYI, [mosquitto] (http://mosquitto.org/) и [emqttd] (http://emqtt.io/) работают в этом сценарии , – jeon

+0

Я сомневаюсь, что отчеты об ошибках в StackOverflow дадут вам очень далеко, рекомендую вам открыть проблему с проектом ActiveMQ. –