更新页面上的信息而不重新加载

时间:2016-02-01 14:21:23

标签: ruby-on-rails ruby-on-rails-4

我正在研究一个简单的功能:

  • 用户输入电话号码
  • 我通过TwilioAPI发送确认码
  • 他们被重定向到他们编写他们收到的代码的页面

发送由Sidekiq工作人员完成。我正在使用gem:https://github.com/utgarda/sidekiq-status来检查作业的状态。

job_id = MyJob.perform_async(*args)

Sidekiq::Status::queued?      job_id
Sidekiq::Status::working?     job_id
Sidekiq::Status::complete?    job_id
Sidekiq::Status::failed?      job_id

这些是工作所处的一些状态。我想要做的是在“输入代码”页面上显示最终用户发生的事情,而无需重新加载页面。

所以,当我检查

  

Sidekiq ::状态::完整? 123

并且作业完成后,他们会看到一个复选标记和一个单词“已发送”。

但如果状态为

  

Sidekiq ::状态::失败了吗? 123

然后会通知他们再试一次。

如何实时检查状态并在同一页面上显示结果(进度)?

1 个答案:

答案 0 :(得分:1)

你可以:

  • 简单:将作业ID返回给客户端javascript,进行状态操作,通过其id返回作业状态,并在javascript中每N秒轮询一次(但不常见,因为这会产生不必要的服务器负载)
  • more' realtimish':设置一些像private_pub这样的彗星服务器,让你的工作在开始,结束和出错时将其状态推送到客户端