2013-10-15 80 views
2

在模型上的餘燼指南灰燼數據,它說(1):使用WebSockets

Ember公司的數據還設計有流API,如socket.io,火力地堡,或WebSockets的工作。您可以打開一個套接字到您的服務器,並將更改記錄發送到商店。

我試過編寫一個使用websocket的自定義適配器,但我沒有走得太遠。我無法在任何地方找到任何工作示例。

這是我完全未完成的原型:

DS.WSAdapter = DS.Adapter.extend(Ember.Evented, { 

    websocket: undefined, 

    init: function() { 
     if(this.websocket === undefined) 
     { 
      this.websocket = new WebSocket('ws://localhost:8887'); 

      this.websocket.onopen = function(e) { 
       console.log("Connection established!"); 

      }; 
      this.websocket.onmessage = function(e) { 
       // What to do here? 
      }; 
     } 

     this._loadData(); 
    }, 

    //.... 

能有人爲請WebSocket的適配器幫助我嗎?

我的主要問題是我不知道websocket.onmessage()執行時該怎麼辦。我甚至無法訪問商店(使用DS.get('defaultStore'))或任何東西

回答

1

我沒有直接使用Ember中的套接字的經驗,但是我最近完成了一個Ember Data + Firebase適配器,它應遵循非常類似的方法。

你應該,至少,可以使用它作爲靈感:

https://github.com/sandersonet/ember-data-firebase

火力地堡確實從下面的插槽提供抽象的附加層,但這些方法都非常相似。

0

看一看http://emberjs.com/guides/models/frequently-asked-questions/#toc_how-do-i-inform-ember-data-about-new-records-created-on-the-backend

一些應用程序可能要在店裏 不通過store.find請求記錄添加或更新記錄。要完成此操作,您可以使用DS.Store的push,pushPayload或更新方法。這是 對於具有通道的Web應用程序(如SSE或Web套接字)有用,以通知其在後端的新記錄或更新記錄。

基本上,你需要在你onmessage鉤反序列化收到的數據和推新對象使用store.push('model', record)或替代方法的數據存儲。

+0

您的鏈接似乎已損壞(重定向到404)。也許這是一個很好的替代鏈接? https://guides.emberjs.com/v2.5.0/models/pushing-records-into-the-store/ – iX3