Push-уведомление Apple в Erlang (или улучшено в Ruby?) - PullRequest
4 голосов
/ 14 сентября 2009

В настоящий момент на моем сервере в Ruby запущено push-уведомление Apple. Я хотел бы получить один в Эрланге, поскольку я хотел бы использовать наблюдателя, чтобы следить за этим. У кого-нибудь есть код, с которым они могли бы мне помочь?

Вот мой код 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 не выполним, то я не против присоединиться к своему Ruby, пока я могу поддерживать свои связи и, возможно, контролировать это через Erlang. Кто-нибудь знает, возможно ли это?

Ответы [ 3 ]

2 голосов
/ 19 ноября 2009

Этот вопрос об Apple Push-уведомлениях с Erlang также может быть полезным для этого.

0 голосов
/ 09 октября 2009

Вы также можете проверить apn_on_rails проект.

Если вы придумали реализацию Erlang, пожалуйста, рассмотрите ее для нас :).

0 голосов
/ 14 сентября 2009

HTTP-клиент (с поддержкой SSL), который поставляется с Erlang, работает достаточно хорошо (я не могу сказать, что тестировал его в бою). Соответствующая документация доступна здесь .

1) Не забудьте выполнить inets: start () в своем приложении, прежде чем пытаться выполнять HTTP-вызовы.

2) По моему (небольшому) опыту, запуск модуля 'inets' кажется немного сложным: не пытайтесь запустить его в вашем модуле супервизора, иначе ваши серверы не будут работать. Обычно я делаю inets: start () в первом серверном модуле моего приложения, прежде чем другие серверы, требующие HTTP.

3) Чтобы выполнить операцию «push», я думаю, вам нужно будет использовать параметр «stream».

...