2

当一个玩家做出一个移动到服务器时。并且该动作由服务器推送给第二个玩家。据我所知,将移动推送给第二个玩家的服务器不符合 RESTful api。

根据我对backbone.js 的了解,它确实适用于RESTful 设置。有没有办法将backbone.js 与websockets 一起使用,以允许服务器随时将数据推送到客户端?

甚至有没有一种惯用的方式来使用骨干网和 websockets 实现国际象棋?如果不是,那么实施国际象棋的正确方法是什么?

4

3 回答 3

0

你绝对可以做到。而不是获取您的集合/模型,您只需将来自 websocket 的 json 数据setupdate/数据放入正确的模型或集合中。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);
}
于 2013-02-15T00:18:18.560 回答
0

实现一个国际象棋应用程序并不需要Backbone架构。只要您的服务器支持Asynchronous API, WebSockets, 甚至long-polling(任何实时的),它都是可能的。API网上已经有大量的s 可以做到这一点(即FireBase)以及框架(即Meteor)。

如果您在服务器端使用Node JS ,还请查看Socket IO 。GitHub 上有大量的开源项目已经利用了其中一些 Web 技术,尤其是 Backbone。带 Socket IO 的骨干网Backbone.ioBind看起来也是一个很有前途的项目,其中包含您可以查看的代码示例。

为了让它工作Backbone,数据 API 只需要通知任何客户端侦听器服务器上已经进行了更新,这反过来会触发changeBackbone 上的事件Model

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

于 2013-02-15T00:39:02.923 回答
0

您可以重载 Backbone.sync 方法以使用 websockets。事实上的 To-Do 示例 ( http://addyosmani.github.com/todomvc/ ) 这样做是为了使用本地存储而不是 RESTful 数据存储,您可以对 Web 套接字执行相同的操作。事实上,如果你环顾一下 Github/Google,你可能会找到已经做过的人。

于 2013-02-15T18:04:50.417 回答