当一个玩家进行发送到服务器的移动时。并且该移动被服务器推送到第二个玩家。据我所知,推动移动到第二个播放器的服务器不支持RESTful api。
从我对backbone.js的了解很少,它实际上意味着RESTful设置。有没有办法使用backbone.js和websockets来允许服务器随时将数据推送到客户端?
是否有一种惯用的方式用backbone.js和websockets实现国际象棋?如果没有,那么实施国际象棋的正确方法是什么?
答案 0 :(得分:1)
实施国际象棋应用并不需要Backbone
架构。只要您的服务器支持Asynchronous API
,WebSockets
,甚至long-polling
(任何实时),都可以。网上已有大量的API
已经出现这种情况(即FireBase)以及框架(即Meteor)。
如果您在服务器端使用Socket IO,请查看Node JS。 GitHub上有大量的开源项目,它们已经利用了其中的一些Web技术,特别是Backbone。 Backbone with Socket IO。 Backbone.ioBind看起来像是一个很有前途的项目,您可以查看代码示例。
要使其与Backbone
一起使用,数据API只需要通知任何客户端侦听器已在服务器上进行更新,从而在您的Backbone上触发change
事件{ {1}}。
您甚至可以设置一个计时器,每隔Model
时间对服务器执行一次请求,以测试您的代码原型。
答案 1 :(得分:0)
你绝对可以做到。您只需将set
或update
/ 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,你可能会找到一个已经完成它的人。