Свързване към Android сървър с websocket

Пускам MQTT брокер/сървър (това е модифицирана версия на moquette) на телефон с Android (Motorola Moto 3g, Android 6.0), които приемат заявка чрез стандартна връзка на порт 1883 и уебсокет връзка през порт 9001.

Когато се опитвам да се свържа със сървъра на същия телефон, на който сървърът работи, с MQTT websocket клиент, всичко работи (с хост 127.0.0.1 и порт 9001).

Но ако се опитвам да се свържа със сървъра с моя лаптоп, свързан към същата локална мрежа, това не успява. Същото нещо, ако създам WiFi точка за достъп на моя лаптоп и се свържа с него с телефона.

Бързо сканиране на NMap изглежда разкрива, че портът 9001 на телефона е затворен:

Starting Nmap 7.01 ( https://nmap.org ) at 2016-06-23 12:20 CEST
Nmap scan report for 10.100.100.134
Host is up (0.0038s latency).
PORT     STATE  SERVICE
9001/tcp closed tor-orport

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

Така че моето предположение е, че или сървърът слуша на грешен интерфейс (намерих това DEBUG io.netty.util.NetUtil - Loopback interface: lo (lo, ::1%1) в дневника на adb, но не изглежда това да е проблемът, вижте този отговор на stackoverflow) или че трябва да отворя порта ръчно на телефона, но не намерих нищо за това в Google.


person Maeln    schedule 23.06.2016    source източник
comment
каква host стойност имаш в конфигурационния файл на mosquette?   -  person hardillb    schedule 23.06.2016
comment
Използвам в конфигурационния файл на паметта с помощта на класа Properties и свойствата са: prop.setProperty("port", "1883"); prop.setProperty("websocket_port", "9001"); prop.setProperty("host", "127.0.0.1"); prop.setProperty("allow_anonymous", "true");   -  person Maeln    schedule 23.06.2016


Отговори (1)


Вашият проблем е, че принуждавате брокера да слуша само loopback интерфейса:

prop.setProperty("port", "1883"); 
prop.setProperty("websocket_port", "9001"); 
prop.setProperty("host", "127.0.0.1"); 
prop.setProperty("allow_anonymous", "true");

Трябва да го промените на следното:

prop.setProperty("port", "1883"); 
prop.setProperty("websocket_port", "9001"); 
prop.setProperty("host", "0.0.0.0"); 
prop.setProperty("allow_anonymous", "true");

0.0.0.0 представлява всички интерфейси, където като 127.0.0.1 е само обратната връзка

person hardillb    schedule 23.06.2016