首页 > 解决方案 > 发送消息 en hook 成功 - Delayed_job

问题描述

作业成功完成后如何发送消息?当工作正确完成时,我想发送消息并swal在 javascript 中显示它,但我不知道该怎么做,有什么建议吗?

除了发送消息我不需要做任何事情

class CompileProjectJob < Struct.new(:url)
  def perform
  end

  def success(job)
     #send message when the work is successful
  end
end

标签: ruby-on-railsdelayed-job

解决方案


perform方法队列的末尾,用于发送消息的新延迟作业

class CompileProjectJob < Struct.new(:url)
  def perform
    # the code here of this job 
    # queue new job 
  end
end

perform 方法的代码与任何常规代码一样按顺序执行

更新

将消息发送到前端有两种方式(推送和拉取)更多信息 - 推送:使用 Web 套接字将消息从后端推送到前端 - 拉取:前端每隔一段时间发送请求以检查是否后端有新数据

你可以使用这些技术中的任何一种来解决问题

如果您使用拉动,您将使作业更新数据存储,例如 Redis 或 mysql。在某些情况下,前端将每隔一段时间发送一个请求以检查新数据,这将是一个更好的解决方案,但我认为您正在寻找其他技术

push:在这里你可以使用有源电缆https://guides.rubyonrails.org/action_cable_overview.html之类的东西, 或者像 pusher 这样的第三方https://www.pusher.com/tutorials/realtime-table-ruby-rails main在这里,您的前端应用程序将打开与您的服务器的 websocket 连接。此套接字将保持打开状态并通过通道侦听来自后端的任何更新,因此当您通过此通道完成作业后发送更新时,前端将接收该更新,因此您可以添加代码以显示消息


推荐阅读