2015-08-28 22 views
3

我對ember.js和客戶端開發一般都比較陌生。 我目前的設置是某事像這樣:Emberjs:使用Websocket後端作爲數據源

Client/Server Schema

這不是使用像socket.io左右庫。 (下面的協議示例)

所以一般來說,這是我想要實現的。我已經寫了一個對象,它會根據請求返回一個Promise。由於我在開始時需要登錄步驟,因此我想在某處創建對象,並在創建時自動登錄。

現在我的問題:

  • 凡定義餘燼框架類?
  • 在創建後創建/存儲對象的位置(由於登錄僅在套接字打開時有效,因此需要爲單例)?
  • 如何訪問對象,當我需要發送請求。

樣品登錄請求:

請求:

{ 
    "type": "request", 
    "subtype": "apilogin", 
    "id": 1234, 
    "data": { 
     "username": "<string|null>", 
     "password": "<string|null>", 
     "token": "<string|null>" 
    } 
} 

答:

{ 
    "type": "answer", 
    "subtype": "apilogin", 
    "id": 1234, 
    "error": 0, 
    "errormessage": "", 
    "data": { 
     "token": "<string>" 
    } 
} 

令牌只是另一種方式登錄有效期長達15分鐘的插座後關閉。 (在網絡錯誤或類似情況後重新連接)。

因爲我從來沒有真正做過這樣的事情,所以我有點問題在哪裏把東西放在框架以及如何訪問它們。

回答

2

我認爲這種情況是Ember services的完美人選。要單獨回答你的問題:

在哪裏定義類在ember框架?

任何地方都可以。如果您使用Ember CLI,則可能需要將其放入services目錄中。

在創建後創建/存儲對象的位置(由於登錄僅在套接字打開時有效,因此需要爲單例)?

Ember容器將爲您創建實例。默認情況下,從容器中查找的所有項都是單例,所以您不必擔心這一點。

如何訪問對象,當我需要發送請求。

您應該將服務注入到您需要的類中。要採取從我掛的指南,這將注入服務成一個類:

Ember.Component.extend({ 
    // Make sure you name your object SocketService 
    socket: Ember.inject.service() 
}); 

或者,將其注入到一個類型的所有類(例如,爲它注入到所有路由),使用初始化程序:

application.inject('route', 'socket', 'service:socket');