2013-02-14 34 views
2

當一個玩家進行移動併發送到服務器。這一舉動被服務器推向第二位玩家。據我所知,將服務器推向第二臺服務器不利於RESTful API。如何用RESTful API實現與backbone.js的國際象棋?

從我對backbone.js所知甚少,這對於RESTful設置來說確實意味着什麼。有沒有辦法使用帶有websockets的backbone.js來允許服務器隨時將數據推送到客戶端?

是否還有一種用backbone.js和websockets實現國際象棋的慣用方式?如果沒有,那麼執行國際象棋的正確方法是什麼?

回答

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

實現一個國際象棋的應用程序並不真正需要一個Backbone架構。只要你的服務器支持Asynchronous API,WebSockets,甚至long-polling(任何實時),這是可能的。在網絡上已經存在大量的API,這就是(FireBase)以及框架(即Meteor)。

如果您在服務器端使用Node JS,還可以查看Socket IO。 GitHub上有大量的開源項目,它們已經充分利用了這些Web技術的一些優勢,特別是Backbone。 Backbone with Socket IOBackbone.ioBind也看起來像一個有前途的項目,您可以查看代碼示例。

,使其與Backbone工作,數據API只需要通知所有客戶端偵聽器的更新已經取得這反過來又觸發對骨幹Model一個change事件的服務器上。

您甚至可以設置一個計時器,每隔n時間向服務器發出一個請求,以測試您的代碼原型。

0

您可以重載Backbone.sync方法以使用websockets。事實上的To-Do示例(http://addyosmani.github.com/todomvc/)會使用localstorage而不是RESTful數據存儲,並且您可以對Web套接字執行相同的操作。事實上,如果你環顧Github/Google,你可能會找到一個已經完成它的人。