在实时页面上通过localhost运行链接

时间:2016-05-18 16:36:18

标签: ruby-on-rails httparty

我有一个外部程序运行本地API,设置为在端点被击中时播放wav文件。

在我的开发环境中,它工作正常,但是当我推向现场环境时,它不再起作用。

我错过了什么吗?

谢谢!

JqueryController

  def playfile
    require 'json'
    HTTParty.get("http://192.168.1.161:5000/play/98")

    response = HTTParty.get("http://192.168.1.161:5000/play/#{params[:id]}")
    parsed = JSON.parse(response)
    @message = params[:message]
    Hint.first.update_attributes(message:@message)
    if parsed['success'] == true
      @success = "Success"
    else
      @success = "Failed"
    end
  end

视图

    =form_tag("/jquery/playfile", method: 'post', remote:true) do
      = label_tag 'hints on the tv!'
      = hidden_field_tag :id , 39
      =render 'layouts/play'

当我点击端点时... googles督察显示“待处理”请求,最终死亡,并返回应用程序错误响应(来自heroku)

我猜它与不允许从现场网站点击本地主机地址有关。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:4)

您无法从互联网(heroku)访问您的局域网。

如果你在http://192.168.1.161:5000/play/98进行GET,那么heroku将在自己的网络中进行搜索..

解决方案1:

建立一个链接(<a href="http://192.168.1.161:5000/play/98"></a>)。 如果你从局域网中点击该链接,这将有效。 (如果要重定向到生产站点,可以使用redirect_back

解决方案2:

http://192.168.1.161:5000/play/98设备制作隧道。 例如,您可以使用ngrok执行此操作。 然后,您就可以使用来自heroku的HTTP Party发出GET请求。 HTTParty.get("http://<ngrok-hash>.ngrok.com/play/98")

注意:对于两种解决方案,您需要在http://192.168.1.161:5000/play/98上运行服务器