运行 a link 通过 localhost 在实时页面上

running a link through localhost on a live page

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

在我的开发环境中,它工作正常,但是当我推送到 live 环境时,它不再工作了。

我是不是漏了什么?

谢谢!

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 inspector 显示一个 'pending' 请求,该请求最终终止,并且 returns 一个应用程序错误响应(来自 heroku)

我猜这与不允许从实时站点访问本地主机地址有关。.有办法解决这个问题吗?

您无法从 Internet (heroku) 访问您的 LAN。

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

解决方案 1:

做一个link (<a href="http://192.168.1.161:5000/play/98"></a>)。 如果您随后从您的 LAN 中点击 link,这将起作用。 (如果您想重定向回生产站点,可以使用 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 上有一个 运行 服务器