Mam klienta ruby tcpsocket, który jest podłączony do serwera.ponownie podłącz tcpsocket (lub jak wykryć zamknięte gniazdo)
Jak mogę sprawdzić, czy gniazdo jest podłączone przed wysłaniem danych?
Czy próbuję "uratować" odłączony tcpsocket, ponownie połączyć, a następnie wysłać ponownie? jeśli tak, czy ktoś ma prosty przykład kodu, ponieważ nie wiem od czego zacząć :(
Byłem bardzo dumny, że udało mi się uzyskać trwałe połączenie tcpsocket z klientem w szynach, a następnie serwer zdecydował się zabić klienta i to wszystko rozpadło;)
edit
Użyłem tego kodu, aby obejść niektóre z problemów - będzie starał się ponownie, jeśli nie jest podłączony, ale nie poradzi sobie w przypadku, gdy serwer jest wyłączony (będzie kontynuował ponawianie próby). Czy to początek właściwego podejścia? Dzięki
def self.write(data)
begin
@@my_connection.write(data)
rescue Exception => e
@@my_connection = TCPSocket.new 'localhost', 8192
retry
end
end
Ponadto powinna istnieć zamknięta metoda na gnieździe. Jestem trochę zardzewiały, ale łatwo przetestowany/potwierdzony w irb/pry –