2009-09-14 5 views
4

현재 Ruby에서 내 서버에서 Apple Push Notification을 실행 중입니다. 얼랑 (Erlang)에서 감독관을 통해 시계를 계속 사용하고 싶습니다. 누구든지 나를 도울 수있는 코드가 있습니까?Apple Push Notification in Erlang (또는 Ruby에서 개선 되었습니까?)

내 루비 코드입니다. 나는이 현재 구현에 대해 좋아하지 않는 한 가지가 연결 상태를 유지하는 것 같지 않습니다 - 그것은 2 ~ 3 회 하루를 연결 해제하고, 내가 처음 푸시가 통과되지 않습니다 다시 연결 후 보인다 :

context = OpenSSL::SSL::SSLContext.new 
context.cert = OpenSSL::X509::Certificate.new(File.read(cert)) 
context.key = OpenSSL::PKey::RSA.new(File.read(cert)) 

def connect_sockets(server, context) 
     sock = TCPSocket.new(server, 2195) 
     ssl = OpenSSL::SSL::SSLSocket.new(sock,context) 
     ssl.connect 

     return sock, ssl 
end  

sock, ssl = connect_sockets(server, context) # this is called to initially connect and also reconnect whenever disconnected. 

Erlang Push가 실행 가능하지 않다면 내 연결을 유지하고 Erlang을 통해 감독하는 한 Ruby를 계속 사용하겠습니다. 아무도 이것이 가능하면 알 수 있습니까?

답변

0

Erlang과 함께 제공되는 HTTP 클라이언트 (SSL 지원)는 정상적으로 작동합니다 (전투 테스트를 통과했다고 할 수는 없습니다). 관련 문서는 here입니다.

1) HTTP 호출을 시도하기 전에 응용 프로그램에서 "inets : start()"를 수행하는 것을 잊지 마십시오.

2) 저의 작은 경험으로 'inets'모듈을 시작하는 것이 약간 까다로운 것 같습니다. 수퍼바이저 모듈에서 시작하지 않으면 서버가 작동하지 않습니다. 나는 보통 HTTP를 필요로하는 다른 서버가 있기 전에 내 응용 프로그램의 첫 번째 서버 모듈에서 'inets : start()'를 수행합니다.

3) '푸시'작업을 수행하려면 '스트림'옵션을 사용해야합니다.

+4

도트 - 응용 프로그램 파일에서 부팅 스크립트를 생성해야하며, 종속 응용 프로그램 인 inets도 있어야합니다. – Christian

0

apn_on_rails 프로젝트를 확인하시기 바랍니다.

얼랭 구현을 생각해 보면, 우리와 공유하는 것을 고려해보십시오 :).

+0

확실히 레일에 대한 감사합니다. – ewindsor