4

我目前在 Ruby 的服务器上运行 Apple 推送通知。我想在 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 不可行,那么我不介意坚持使用我的 Ruby,只要我可以保持我的连接活跃,并且也许通过 Erlang 来监督它。有谁知道这是否可能?

4

3 回答 3

2

这个关于 Apple Push Notifications with Erlang 的问题也可能对这个问题有用。

于 2009-11-19T18:11:59.413 回答
0

您还可以查看apn_on_rails 项目。

如果您提出了 Erlang 实现,请考虑与我们分享 :)。

于 2009-10-09T18:11:55.400 回答
0

Erlang 附带的 HTTP 客户端(支持 SSL)工作得相当好(我不能说我已经对它进行了实战测试)。相关文档可在此处获得。

1) 在尝试进行 HTTP 调用之前,不要忘记在您的应用程序中执行“inets:start()”。

2)根据我的(小)经验,启动“inets”模块似乎有点棘手:不要尝试在您的主管模块中启动它,否则您的服务器将无法工作。我通常在我的应用程序的第一个服务器模块中执行“inets:start()”,然后再执行任何其他需要 HTTP 的服务器。

3)要执行“推送”操作,我想您需要使用“流”选项。

于 2009-09-14T02:20:07.073 回答