javascript - 如何在不进行轮询的情况下从我的 Ruby REST/CRUD API 持续更新我的 ReactJS 客户端?

标签 javascript ruby websocket reactjs reactjs-flux

背景

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

我有一个使用 SinatraMongoid 构建的 RubyMongoDB 数据层 API。

使用 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 调用。我知道我可以通过稍微重构并定期运行一段类似于上述代码的代码来实现某种实时性;基本上是轮询

我读过并被告知做事的“真正的 react 方式”是让后端在应用程序状态发生变化时通知前端,并且可靠地实现这一点的方法是使用 WebSockets

底线

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

最佳答案

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

Socket.io 主要面向 Node.js,但应该适用于任何后端。 Here是一篇关于在 Rails 中使用它的文章。

关于javascript - 如何在不进行轮询的情况下从我的 Ruby REST/CRUD API 持续更新我的 ReactJS 客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30364644/

相关文章:

javascript - 无法在meteorjs 中的帖子中添加评论

mysql - rails 4 : Using ActiveRecord object from one thread in another

security - Firefox 无法与 WSS 建立连接

java - Safari 5/iOS,WebSocket 握手有时有效

javascript - 使用数字数组和 json 元素数组时,D3 条形图看起来不同

javascript - 正则表达式与javascript中的html标签不匹配

java - 如何从小程序访问javascript变量

ruby-on-rails - 类对自身的 "manage"实例使用类方法是一种好习惯吗?

ruby-on-rails - 抽成 Assets :precompile takes 28 minutes on 1. 9.2

javascript - 一个域作为服务器,一个域作为客户端的跨域 Websocket。是否可以?