【问题标题】:How do I continually update my ReactJS client from my Ruby REST/CRUD API without polling?如何在不轮询的情况下从我的 Ruby REST/CRUD API 不断更新我的 ReactJS 客户端?
【发布时间】:2015-08-02 14:01:32
【问题描述】:

背景

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

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

底线

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

【问题讨论】:

  • 您可以通过简单地使用 MeteorJS 来不断更新您的客户端。 jk,我很想知道人们想出了什么解决方案。
  • 更改后端是一项繁重的工作,我可能会避免这样做

标签: javascript ruby websocket reactjs reactjs-flux


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 2011-11-06
    • 2022-12-12
    • 1970-01-01
    • 2022-12-11
    相关资源
    最近更新 更多