如何在不轮询的情况下从Ruby REST/CUD API不断更新我的ReactJS客户端

How do I continually update my ReactJS client from my Ruby REST/CRUD API without polling?

本文关键字:API CUD 我的 客户端 ReactJS REST 更新 Ruby 情况下      更新时间:2023-09-26

背景

我正在构建一个简单的ReactJS应用程序作为概念验证;具有Flux架构等等。

我有一个RubyMongoDB数据层API,使用Sinatraongoid构建。

使用ReactJSJSXFluxxor静态服务的前端。

我目前使用运行以下函数的点击处理程序获取应用程序状态:

function(callback){
  var the_url = (this.state.isSelected) ? '/disable' : '/enable' ;
  $.ajax({
    url: the_url,
    dataType: 'json',
    cache: false,
    success: function(data) {
      callback(data);
    }.bind(this),
    error: function(xhr, status, err) {
      console.error(the_url, status, err.toString());
    }.bind(this)
  });
}

这是一个简单的AJAX调用。我知道我可以通过稍微重构并定期运行一段类似于上面的代码来实现某种实时性;基本上轮询

我读过并被告知,做事的"真正反应方式">是让后端在应用程序的状态发生变化时通知前端,而可靠实现这一点的方法是使用WebSocket

底线

考虑到我所描述的堆栈,我应该使用哪些库来处理应用程序两端的这些套接字,以及最简单的实现是什么样子的

您的解决方案不依赖于使用React,您应该使用与使用任何前端技术相同的方式进行实时更新。WebSockets的问题主要是浏览器支持有点不稳定,socket.io是一种非常流行的解决方法。

Socket.io主要面向Node.js,但应该可以在任何后端使用。下面是一篇关于将它与Rails一起使用的文章。