2013-06-26 4 views
4

EventMachine을 사용하여 프로그램을 빌드하고 약한 인터넷의 클라이언트가 프로그램에서 바인딩 해제를 트리거하는 경우가 있습니다. 바인딩 해제 기능이 트리거되는 이유와 이러한 약한 클라이언트를 돕기 위해 할 수있는 것이 있다면 어떻게 결정할 수 있을지 궁금합니다.EventMachine 이유를 바인드 해제

+0

Ehhm합니다. 다시 연결 하시겠습니까? https://github.com/eventmachine/eventmachine/blob/master/lib/eventmachine.rb#L762? – fl00r

답변

1

언 바인딩은 어떤 이유로 연결이 종료 될 때 호출됩니다. 일반적으로 서버에 다시 연결해야합니다.

class MyConnection < EM::Connection 
    def initialize(host, port) 
    @host, @port = host, port 
    @retry = 0 
    end 

    def self.connect(host, port, timeout) 
    EM.connect(host, port, self, host, port) 
    end 

    def connection_completed 
    @retry = 0 
    end 

    def unbind 
    if @retry < 3 
     EM.add_timer(1){ @retry +=1 && reconnect(@host, @port) } 
    else 
     fail "Can't reconnect" 
    end 
    end 
end 
0

는 또한 "이유"매개 변수 바인딩을 해제 정의 할 수 있습니다 나타납니다

def unbind(reason=nil) 
end 

심판 :

https://groups.google.com/forum/#!topic/eventmachine/9HFuXS15HYg https://github.com/eventmachine/eventmachine/issues/362

+0

이것에 대해 살펴 보았으나 최신 이벤트 머신 젬에서이 코드를 사용하려고 시도했을 때 그 이유는 아무것도 남지 않았습니다. 너에게 효과가 있니? – user2525752

+0

이유가 "다른 이유"를 의미하는 nil이면 EM에 대해 물어볼 수 있습니다 ... – rogerdpack

관련 문제