TLDR: Czy istnieje kod wielokrotnego użytku do automatycznego ponownego łączenia się z serwerem TCP, który czasami kończy się niepowodzeniem?Automatyczne ponowne połączenie z hostem TCP
Piszę aplikację serwera - nazwać hal
- że także otwiera kilka połączeń TCP do innych serwerów - wśród nich xbmc
. Pierwotnie napisałem to tak, że gdy xbmc
zawiodło, proces erlang xbmc
został zatrzymany, a następnie ponownie uruchomiony przez jego przełożonego.
Podobno nie jest to dobry sposób na wykonywanie trwałych połączeń TCP w erlangu. Po pierwsze, to nie działa: po niepowodzeniu xbmc
procesy zostałyby uruchomione zbyt szybko, a supervisor zamknąłby cały program hal
. Po drugie, najwyraźniej nie powinienem używać do tego nadzorcy: Erlang Supervisor Strategy For Restarting Connections to Downed Hosts (Czytając to, to powiązane pytanie odpowiada tylko "czy przełożony to rozwiązuje?" I nie jest duplikatem mojego pytania)
Jestem myślenie to brzmi jak rozsądnie powszechny przypadek użycia, utrzymywanie połączenia TCP tak jak to możliwe, nawet z hostem, który znika od czasu do czasu. Czy jest jakiś kod OTP lub inny kod biblioteki, który powinienem użyć, aby to osiągnąć?
Dzięki. Nie zawsze łatwo jest odpowiedzieć "nie" :) Dla twojego następnego projektu open source, proponuję zrobienie tego menadżera połączeń: D –
Tak się składa, że mniej więcej teraz go piszę. Zaktualizuję moją odpowiedź, jeśli zostanie wydana. – archaelus