【问题标题】:Apple Push Notification in Erlang (or improved in Ruby?)Erlang 中的 Apple 推送通知(或 Ruby 中的改进?)
【发布时间】:2010-11-27 23:57:42
【问题描述】:

我目前在我的服务器上使用 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 监督它。有谁知道这是否可能?

【问题讨论】:

    标签: ruby erlang push notifications apple-push-notifications


    【解决方案1】:

    这个question on Apple Push Notifications with Erlang 也可能对这个有用。

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • 听起来你应该从你的 dot-app 文件生成一个启动脚本,当然还有 inets 作为它的依赖应用程序。
      【解决方案3】:

      您还可以查看apn_on_rails 项目。

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

      【讨论】:

      • 当然 :) 感谢 Rails 的领导。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      • 1970-01-01
      • 2017-11-18
      • 1970-01-01
      • 2015-01-06
      • 1970-01-01
      相关资源
      最近更新 更多