如何使用RESTful api实现backbone.js的国际象棋?

时间:2013-02-14 23:52:46

标签: rest backbone.js websocket chess

当一个玩家进行发送到服务器的移动时。并且该移动被服务器推送到第二个玩家。据我所知,推动移动到第二个播放器的服务器不支持RESTful api。

从我对backbone.js的了解很少,它实际上意味着RESTful设置。有没有办法使用backbone.js和websockets来允许服务器随时将数据推送到客户端?

是否有一种惯用的方式用backbone.js和websockets实现国际象棋?如果没有,那么实施国际象棋的正确方法是什么?

3 个答案:

答案 0 :(得分:1)

实施国际象棋应用并不需要Backbone架构。只要您的服务器支持Asynchronous APIWebSockets,甚至long-polling(任何实时),都可以。网上已有大量的API已经出现这种情况(即FireBase)以及框架(即Meteor)。

如果您在服务器端使用Socket IO,请查看Node JS。 GitHub上有大量的开源项目,它们已经利用了其中的一些Web技术,特别是Backbone。 Backbone with Socket IOBackbone.ioBind看起来像是一个很有前途的项目,您可以查看代码示例。

要使其与Backbone一起使用,数据API只需要通知任何客户端侦听器已在服务器上进行更新,从而在您的Backbone上触发change事件{ {1}}。

您甚至可以设置一个计时器,每隔Model时间对服务器执行一次请求,以测试您的代码原型。

答案 1 :(得分:0)

你绝对可以做到。您只需将setupdate / reset来自websocket的json数据添加到正确的模型或集合中,而不是获取您的集合/模型。

有些伪代码示例:

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);
}

答案 2 :(得分:0)

您可以重载Backbone.sync方法以使用websockets。事实上的To-Do示例(http://addyosmani.github.com/todomvc/)执行此操作以使用localstorage而不是RESTful数据存储区,并且您可以对Web套接字执行相同操作。事实上,如果你环顾Github / Google,你可能会找到一个已经完成它的人。