我对ember.js和客户端开发一般都很新。 我目前的设置看起来像这样:
这不是像socket.io这样的库。 (下面的协议示例)
所以一般来说,这就是我想要实现的目标。我已经编写了一个Object,它将在请求时返回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分钟有效。 (在网络错误或类似情况后重新连接)。
因为我从来没有真正做过这样的事情,所以我遇到了将问题放在框架中以及如何访问它们的问题。
答案 0 :(得分:2)
我认为这种情况是Ember services的完美候选人。分别回答你的问题:
在ember框架中定义类的位置?
任何地方都可以。如果您使用的是Ember CLI,则可能需要将其放在services
目录中。
在创建后创建/存储对象的位置(由于登录仅在套接字打开时有效,因此需要单例)?
Ember容器将为您创建实例。默认情况下,从容器中查找的所有项目都是单例,因此您不必担心这一点。
当我需要发送请求时,如何访问Object。
您应该将服务注入您需要的类中。要从我链接的指南中获取,这将把服务注入一个类:
Ember.Component.extend({
// Make sure you name your object SocketService
socket: Ember.inject.service()
});
或者,要将其注入所有类型的类(例如,将其注入所有路由),请使用初始化程序:
application.inject('route', 'socket', 'service:socket');