背景
我正在构建一个简单的 ReactJS 应用程序作为概念验证;具有 Flux 架构和所有。
我有一个使用 Sinatra 和 Mongoid 构建的 Ruby 和 MongoDB 数据层 API。
使用 ReactJS、JSX 和 Fluxxor 静态服务的前端。
我目前使用运行以下函数的点击处理程序获取应用程序状态:
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/