【问题标题】:Pusher Heroku Add-on errorPusher Heroku 插件错误
【发布时间】:2014-02-03 01:40:34
【问题描述】:

所以我在我的应用程序中使用 Pusher Heroku 插件。该应用程序具有实时通知,因此当用户收到一条消息时,他会看到一个弹出通知,上面写着“新消息”。但是,在生产中我收到以下错误:

Firefox can't establish a connection to the server at ws://ws.pusherapp.com/app/b1cc5d4f400faddcb40b?protocol=7&client=js&version=2.1.6&flash=false.
Reload the page to get source for: http://js.pusher.com/2.1/pusher.min.js

这是 Pusher 控制器:

class PusherController < ApplicationController
  protect_from_forgery :except => :auth # stop rails CSRF protection for this action

  def auth
    Pusher.app_id = ENV['PUSHER_APP_ID']
    Pusher.key = ENV['PUSHER_KEY']
    Pusher.secret = ENV['PUSHER_SECRET']



    if current_user && params[:channel_name] == "private-user-#{current_user.id}"
      response = Pusher[params[:channel_name]].authenticate(params[:socket_id])
      render :json => response
    else
      render :text => "Not authorized", :status => '403'
    end
  end
end

我正在使用figaro gem 将密钥推送到heroku。

我做错了什么?

亲切的问候

【问题讨论】:

    标签: ruby-on-rails heroku ruby-on-rails-4 pusher


    【解决方案1】:

    JS

    这看起来像是 Javascript 而不是 Rails 的问题

    我们的推送器与我们的一个生产应用程序配合得非常好,它首先安装了pusher gem,允许您从布局中调用pusher JS 文件:

    #app/views/layouts/application.html.erb
    <%= javascript_include_tag "http://js.pusher.com/2.1/pusher.min.js" %>
    

    导轨

    您可能还希望将推送器初始化代码放入初始化程序中:

    #config/initializers/pusher.rb
    Pusher.url = ENV["PUSHER_URL"]
    
    Pusher.app_id = ENV["PUSHER_APP_ID"]
    Pusher.key = ENV["PUSHER_KEY"]
    Pusher.secret = ENV["PUSHER_SECRET"]
    

    这将确保应用范围内的连接,而不是特定于控制器的连接(允许更大的灵活性)

    【讨论】:

    • 谢谢,我应该提到我的初始化程序/pusher.rb 中确实有该代码,但它仍然没有正确连接。不太清楚问题出在哪里。
    • 也许你的防火墙被阻止了?另外,你的布局中有 JS 吗?
    • 是的,这一行在 application.html.erb js.pusher.com/2.1/pusher.min.js" %> 中。让我换个浏览器试试,很好。
    • 奇怪,但很好 - 我没有在 Chrome 上收到 JS 错误,而只是在 Firefox 上。为什么会这样?
    【解决方案2】:

    Firefox 无法与位于 ws://ws.pusherapp.com/app/b1cc5d4f400faddcb40b?protocol=7&client=js&version=2.1.6&flash=false 的服务器建立连接。 重新加载页面以获取源代码:http://js.pusher.com/2.1/pusher.min.js

    这并不一定意味着有任何问题。它只是意味着无法建立不安全的 WebSocket 连接。 Pusher 的fallback strategy 应该会导致通过 HTTP 回退(HTTP 或 HTTPS)或通过 WSS(安全的 WebSocket 连接)建立成功的连接。

    失败的连接尝试被记录为控制台错误。对此无能为力。

    要对此进行测试,您可以绑定到 connection events 并确保您确实在连接。 pusher-js JavaScript logging 也将帮助确定正在发生的事情。

    你也可以试试http://test.pusher.com/

    【讨论】:

    • 知道了,我似乎只在 Firefox 中收到此错误,而不是在 Chrome 中。我可以做些什么来解决这个问题?谢谢
    • 它还在 Firefox 中连接吗?有关 deyermongvifbit 的详细信息,请参阅我的答案。您无法停止记录错误消息,因为它是网络级浏览器消息。
    猜你喜欢
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 2020-05-14
    • 2012-09-12
    • 1970-01-01
    • 2018-08-06
    • 2016-08-26
    • 1970-01-01
    相关资源
    最近更新 更多