рельсы, получающие веб-крюк между двумя местными хозяевами - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть приложение rails, которое отправляет webhook (localhost: 3000) с данными. Раньше я использовал онлайн-монитор веб-крюка (Pipedream), но теперь я хочу создать второе приложение rails для получения данных (localhost: 3000 -> localhost: 3300). Я создал маршрут / webhook / receive и контроллер для него, но ничего не получил от localhost: 3000.

Что я делаю не так?

Это в моем первом приложении:

def send_create_webhook(webhook_url)
 company = User.find_by(email: 'test1@test.de').company_account
 webhook_url = 'tcp://0.0.0.0:3300/data/receive'

 SendWebhookJob.perform_later(webhook_url, {
      subscription: {
          type: "#{@tool.title} successfully subscribed",
          date: "#{Time.zone.now}",
          subscribed: Time.now.strftime("%Y-%d-%m %H:%M:%S %Z"),
          user: {
              company: "#{company.title}",
              name: current_user.name,
              email: current_user.email,
          }
      }
  })
end


class SendWebhookJob < ApplicationJob
  queue_as :default

  WEBHOOK_RETRIES = 3

  def perform(webhook_url, data, retry_count = 0)
    p "COUNT #{retry_count} : #{Time.zone.now} : Sending data to #{webhook_url}"

    # make a request
    begin
      response = HTTP.post(webhook_url, json:data)
      successful = response.code == 200
    rescue StandardError => e
      successful = false
    end

    if successful
      p "SUCCESSFUL WEBHOOK"
    elsif retry_count < WEBHOOK_RETRIES
      wait = 2 ** retry_count
      SendWebhookJob.set(wait: wait.seconds).perform_later(webhook_url, data,retry_count + 1)
    end
  end
end

Второе приложение, которое я только что создал:

resources :data do
 get :receive
 post :receive
end

def DataController < ApplicationController
 require "http"

 def receive
  response = HTTP.get('tcp://0.0.0.0:3000')
 end

end
...