Potrzebuję porady. Nie jestem do końca pewien czy to co wymyśliłem ma w ogóle sens, więc wszelka krytyka uzasadniona.
Mam kilka instancji tej samej aplikacji w różnych sieciach. Aplikacją jest serwer ASP.net Core. Chciałbym, żeby aplikacje te mogły się wymieniać krótkimi, prostymi wiadomościami o swoim statusie. Coś na zasadzie sieci P2P. Instancje nie znają nawzajem swoich adresów IP, mogłyby się komunikować gdybym jednemu z nich podał adres drugiego.
Ich adresy IP nie są stałe, więc najpierw musiałem wymyślić sposób "nawiązywania połączenia" między nimi. Skoro są to serwery http, to wymyśliłem że jeżeli Serwer1 chce się połączyć z Serwer2, to wysyła mu API request na URL "http://adres_ip/sync". Serwer2 może teraz pobrać adres IP i port z requestu (var nodeIp = _accessor.HttpContext?.Connection?.RemoteIpAddress?.MapToIPv4()
), zapisuje sobie te dane w bazie danych. Od tej chwili Serwer2 mógłby w dowolnym momencie wysyłać wiadomości Serwerowi1 bo zna jego adres IP.
W teorii, bo czy w praktyce miałoby to prawo działać? Bo jeżeli wysłałbym request do innej sieci, to serwer w innej sieci odbierze publiczny adres mojego routera i zapewne port TCP (dzięki któremu protokół http może wysłać odpowiedź). Czyli Serwer2 nie poznałby dokładnego adresu Serwera1. Z drugiej strony jednak jakoś te sieci P2P działają. Gdzie jest luka w moim rozumowaniu?