当一个玩家做出一个移动到服务器时。并且该动作由服务器推送给第二个玩家。据我所知,将移动推送给第二个玩家的服务器不符合 RESTful api。
根据我对backbone.js 的了解,它确实适用于RESTful 设置。有没有办法将backbone.js 与websockets 一起使用,以允许服务器随时将数据推送到客户端?
甚至有没有一种惯用的方式来使用骨干网和 websockets 实现国际象棋?如果不是,那么实施国际象棋的正确方法是什么?
当一个玩家做出一个移动到服务器时。并且该动作由服务器推送给第二个玩家。据我所知,将移动推送给第二个玩家的服务器不符合 RESTful api。
根据我对backbone.js 的了解,它确实适用于RESTful 设置。有没有办法将backbone.js 与websockets 一起使用,以允许服务器随时将数据推送到客户端?
甚至有没有一种惯用的方式来使用骨干网和 websockets 实现国际象棋?如果不是,那么实施国际象棋的正确方法是什么?
你绝对可以做到。而不是获取您的集合/模型,您只需将来自 websocket 的 json 数据set
或update
/数据放入正确的模型或集合中。reset
有点伪代码示例:
var board = new Backbone.Collection(); // this would probably be your own extended Collection instead.
function boardChange(jsonFromServer){
// Take the json array from server,
// and update the collection with it.
// This would trigger 'change' events in each model in the collection (if changed).
board.update(jsonFromServer);
}
实现一个国际象棋应用程序并不需要Backbone
架构。只要您的服务器支持Asynchronous API
, WebSockets
, 甚至long-polling
(任何实时的),它都是可能的。API
网上已经有大量的s 可以做到这一点(即FireBase)以及框架(即Meteor)。
如果您在服务器端使用Node JS ,还请查看Socket IO 。GitHub 上有大量的开源项目已经利用了其中一些 Web 技术,尤其是 Backbone。带 Socket IO 的骨干网。Backbone.ioBind看起来也是一个很有前途的项目,其中包含您可以查看的代码示例。
为了让它工作Backbone
,数据 API 只需要通知任何客户端侦听器服务器上已经进行了更新,这反过来会触发change
Backbone 上的事件Model
。
您甚至可以设置一个计时器,每n
隔一段时间就向服务器执行一次请求,以测试您的代码原型。
您可以重载 Backbone.sync 方法以使用 websockets。事实上的 To-Do 示例 ( http://addyosmani.github.com/todomvc/ ) 这样做是为了使用本地存储而不是 RESTful 数据存储,您可以对 Web 套接字执行相同的操作。事实上,如果你环顾一下 Github/Google,你可能会找到已经做过的人。