试图让我的控制器每 60 秒连续发射一次 导轨

问题描述

我正在构建一个股票代码应用,它会根据每 60 秒刷新一次的数据提醒用户。我不希望新的数据调用来自客户端,但不知道如何让控制器持续进行 API 调用并推送到客户端。

 def search
    @price = find_price()
    render json: @price
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    # def setprice
    #   @price = Price.find(params[:id])
    # end

    def request_api()
      response = Excon.get(
        'example.api'
      )

      return nil if response.status != 200
    data = JSON.parse(response.body)
    data['PriceRange']['4']
    end

    def find_price()
      request_api()
    end

    # Only allow a trusted parameter "white list" through.
    def price_params
      params.require(:price).permit(:price)
    end
end

解决方法

简短的回答是你不能通过控制器来做,因为一旦控制器处理了客户端的请求,它就会“忘记”客户端。您想要的是某种 ActionCable 解决方案。 ActionCable 是 Rails 设置 websockets 的方式;如果您有 websocket 连接,服务器可以将更新推送到连接到它的每个客户端。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...