Voglio creare un servizio che verrà eseguito localmente (non accessibile da Internet) su una determinata porta, quindi un'estensione del browser dovrà accedere a questo servizio.
Il mio problema è che non posso sapere quale porta sarà disponibile in anticipo, quindi dovrei sceglierne una più o meno a caso e avrò bisogno dell'estensione per scoprire quale porta è.
Mi chiedo quale sarebbe un buon modo per implementarlo?
Ho pensato a due soluzioni:
-
Lato servizio: seleziona le porte casuali finché non ne è disponibile una e avvia il servizio su questa porta. Lato estensione: analizza tutte le porte e esegui il ping fino a quando non viene trovato il servizio (il servizio avrà un endpoint / ping e risponderà con una stringa specifica che può essere riconosciuta).
-
Servizio: avere un elenco di porte preselezionate (ad esempio 8900, 8901, 8902) e trovare il primo disponibile. Lato interno: esegue la scansione di tutte le porte nell'elenco finché non viene trovato il servizio.
Penso che nessuna di queste soluzioni sia così bella. 1. è probabilmente molto lento e inefficiente. 2. è un po 'migliore ma crea un accoppiamento tra l'app e il servizio, che dovranno entrambi conoscere l'elenco delle porte possibili. Anche se questa lista viene mai modificata, sia il servizio che l'app dovranno essere aggiornati allo stesso tempo altrimenti l'app non sarà in grado di trovare il servizio. Inoltre è un problema se per qualche ragione tutte le porte in quell'elenco non sono disponibili.
Quindi in sostanza non sono sicuro di quale sia l'approccio migliore qui? Forse lo sto guardando male?